Foro: Dudas y Consultas

TP1 listas circulares

TP1 listas circulares

de Usuario eliminado -
Número de respuestas: 1

Buenas profe, queria saber si lo que hice esta bien.

pnodo quitar_final(pnodo &lista){
pnodo extraido,i;
if(lista==NULL)
extraido=NULL;
else{
if(lista->sig==lista){
extraido=lista;
lista=NULL;

extraido->sig=NULL;
}else{
for(i=lista;(i->sig)->sig != lista;i=i->sig);
extraido=i->sig;
i->sig=lista;

extraido->sig=NULL;
}
}
return extraido;
}

 es importante desprender el nodo extraido de la lista, ya que dependerá del problema que se utilice luego el nodo que extrae del quitar y para evitar errores es conveniente que pierda la conexión de manera completa, el resto es correcto

 

void agregar_orden(pnodo &lista, pnodo nuevo){
pnodo i;
if(lista==NULL){
lista=nuevo;
lista->sig=lista;
}else{
for(i=lista;i->sig!=lista;i=i->sig);
if(nuevo->dato < lista->dato){
nuevo->sig=lista;
lista=nuevo;
i->sig=lista;
}else{
for(i=lista;i->sig!=lista && (i->sig)->dato < nuevo->dato;i=i->sig);
nuevo->sig=i->sig;
i->sig=nuevo;
}
}
}

//el agregar en orden sería válido

desde ya muchas gracias

(Editado por Verónica Torres - envío original viernes, 25 de agosto de 2023, 23:59)