Está en la página 1de 4

7.

Sea la cola de prioridades siguiente mantenida en una Lista Unidireccional

a) Describir la estructura de la lista si se aade a la cola los siguientes:

X Prioridad 2

Y Prioridad 3

Z Prioridad 2

W Prioridad 1

b) Describir la estructura de la lista si despus de las inserciones se eliminan 3 elementos de la


cola de prioridades, en la lista unidireccional.

c) Realizar el algoritmo correspondiente de insercin y eliminacin

void encolar(struct cola &q, char valor, int prioridad){

struct nodo *aux = crearNodo(valor,prioridad);

aux->sgte = NULL;

if(q.delante == NULL){
q.delante = aux;

} else{

(q.detras)->sgte = aux;

q.detras = aux;

void mostrarCola(struct cola &q){

struct nodo *aux;

aux = q.delante;

cout<<" Caracter Prioridad"<<endl;

cout<<" ----------------- "<<endl;

while(aux != NULL){

cout<<" "<<aux->letra<<" "<<aux->prio<<endl;

aux = aux->sgte;

getche();

void decolar(struct cola &q){

struct nodo *aux = new(struct nodo);

struct nodo *n = q.delante;

while(n != q.detras){

aux = n;

n = n->sgte;

if(n == NULL){
cout<<"Cola vacia"<<endl;

}else{

aux->sgte = n->sgte;

q.detras = aux;

cout<<"Valor eliminado"<<endl;

void ordenaPrio(struct cola &q){

struct nodo *aux1, *aux2;

int p_aux;

char let_aux;

aux1 = q.delante;

while(aux1 != NULL){

aux2 = aux1->sgte;

while(aux2 != NULL){

if(aux1->prio > aux2->prio){

let_aux = aux1->letra;

p_aux = aux1->prio;

aux1->letra = aux2->letra;

aux1->prio = aux2->prio;

aux2->letra = let_aux;

aux2->prio = p_aux;

aux2 = aux2->sgte;

aux1 = aux1->sgte;
}

void insertar(struct cola &q, char letra, int prioridad){

encolar(q,letra,prioridad);

ordenaPrio(q);

También podría gustarte