Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda con listas en c!!!!!!!

Estas en el tema de Ayuda con listas en c!!!!!!! en el foro de C/C++ en Foros del Web. HOLA COMPAÑEROS PROGRAMADORES!!!! ESPERO Y PUEDAN AYUDARME, EL PROBLEMA QUE ME HA TENIDO VARIAS HORAS SENTADO FRENTE A LA PC SIN PODER RESOLVER ES DEL ...
  #1 (permalink)  
Antiguo 06/11/2010, 16:33
 
Fecha de Ingreso: octubre-2010
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Ayuda con listas en c!!!!!!!

HOLA COMPAÑEROS PROGRAMADORES!!!!
ESPERO Y PUEDAN AYUDARME, EL PROBLEMA QUE ME HA TENIDO VARIAS HORAS SENTADO FRENTE A LA PC SIN PODER RESOLVER ES DEL TEMA DE LISTAS, EN EL CUAL SE PIDE LOCALIZAR UN ELEMENTO PARA DESPUES ELIMINAR UNO ANTERIOR,
HASTA AHORA SOLO HE LOGRADO QUE ELIMINE EL PRIMERO CORRECTAMENTE PERO AL TOMAR UN VALOR DIFERENTE QUE NO SEA EL SEGUNDO ME ELIMINA EL MISMO DE REFERENCIA Y PUES YA LE HE DADO VUELTAS AL ASUNTO PERO NO DOY CON LA CORRECCION.
A MI PARECER Y DONDE PIENSO QUE ESTA EL ERROR ES EN LA PARTE DE LETRAS ROJAS YA QUE ES DONDE ELIMINO EL NODO DE REFERENCIA.

ESPERO Y PUEDAN AYUDARME.....

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

typedef struct listas
{
int dat;
struct listas *liga;
}zx;

int main()
{
zx *p; //variable apuntador
zx *q; //variable apuntador
zx *t; //Auxiliar apuntador
int i,nuevo;
p = new zx; //creamos un nodo de zx
p->dat= 35; //damos el valor de L en su parte dato como 35
p->liga = NULL; //L en su parte liga apunta a NULL
t = p; //T Y L APUNTAN AL INICIO
for(i = 30; i >= 5; i -= 5)
{
/* Reserva memoria para un nodo */
t->liga= new zx; //SE CREA P
t=t->liga;
t->dat = i; //introduce la informacion
t -> liga = NULL; //reorganiza

}
t=p;
cout<<"\nLa lista que se encuentra es: \n";

while(t != NULL) //MIENTRAS t sea diferente de NULL
{
cout<<t->dat<<"->"; //IMPRIME EL DATO
t = t->liga; //MIENTRAS T=T EN SU PARTE LIGA
}
cout<<"NIL";//Y AL FINAL PON A NIL


cout<<endl<<endl;
cout<<"Cual es el elemento dado como referecncia ";


//TODA LA PARTE ANTERIOR A MI PARECER ESTA BIEN

int h=0;
t=q=p;
cin>>nuevo;
//******************
if(p==NULL)
cout<<"\nlista sin elementos\n";

else if(p->dat==nuevo)
{
cout<<"\n...NO EXISTE NODO ANTERIOR...\n";
}
else if(p->liga->dat==nuevo)
{
t=p;
p=p->liga;
delete t;
}
else
{
do
{
if(t->liga->dat==nuevo)
{
h++;
break;
}
t=t->liga;

}while(t->liga!=NULL);

printf("%d \n",t->dat);

if(h==1)
{
q=t;
t=t->liga;
q->liga=t->liga;
delete t;
cout<<"nodo eliminado \n";
}



else
cout<<"\nELEMENTO NO ENCONTRADO \n";
}
q=p;
cout<<"\nLa lista que se encuentra es: \n";
while(q != NULL) //MIENTRAS t sea diferente de NULL
{
cout<<q->dat<<"->"; //IMPRIME EL DATO
q = q->liga; //MIENTRAS T=T EN SU PARTE LIGA
}
cout<<"NIL";//Y AL FINAL PON A NIL


cout<<endl<<endl;
getch();
return 0;
}

Etiquetas: listas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:49.