Foro: Dudas y Consultas

TP N°1 Listas circulares

TP N°1 Listas circulares

de Usuario eliminado -
Número de respuestas: 1

Hola  profe buenas tardes, tengo un problema con el modulo de agregar en orden decreciente para listas circulares:

void agregar_orden(tlista &lis,pnodo nuevo){
pnodo i;
if(lis.cant<=10){ //verifica cantidad de nodos //si el límite es 10 aquí debería ser menor estricto para que el siguiente a agregar sea el último
if(lis.inicio == NULL){
   lis.inicio = nuevo;
   nuevo->sig = lis.inicio;
   lis.cant++;
}
else 
{ for(i=lis.inicio;i->sig!=lis.inicio;i=i->sig);
if(nuevo->dato > lis.inicio->dato){
nuevo->sig = lis.inicio;
lis.inicio = nuevo;

i->sig=lis.inicio; //faltó conectar el último nodo con el primero
lis.cant++;
}
else{
for(i = lis.inicio; i->sig!=lis.inicio && (i->sig)->dato>nuevo->dato ; i=i->sig);
nuevo ->sig = i->sig;
i->sig = nuevo;
lis.cant++;

//aquí no necesita volver a conectar ya que si se agrega en medio o al final mantiene la lista circular, cosa que cambiaría si se tiene 2 punteros
}
}
}else
cout<<"Limite de nodos alcanzado (10)"<<endl;
}

 

(Editado por Verónica Torres - envío original lunes, 4 de septiembre de 2023, 20:30)