Necesito :
Realizar un programa que realice las siguientes funciones a una lista sencillamente enlazada:
AnexarLista.
InsertarLista.
EliminarLista.
imprimirLista
BuscarLista(Me indica si existe o no un elemento).
Bien, ahora,
Ya me está anexando, Insertando también, Está imprimiendo, pero el problema empieza al Eliminar un Elemento de la lista.
tengo lo siguiente:
Inicio la lista y creo un Nodo con lo siguiente:
Código C++:
Ver original
//funcion para iniciar la lista cabecera* inilista (void) { cabecera *cab = new cabecera; cab -> longitud=0; cab -> primero = NULL; cab -> ventana = NULL; return cab; } //funcion para crear nodo nodoL *crearnodo (int cod) { nodoL *nuevo = new nodoL; nuevo -> codigo =cod; nuevo -> sgte = NULL; return nuevo; }
Despues, hago un anexo con algo asi:
Código C++:
Ver original
//funcion anexar lista void anxlista (cabecera *cab, nodoL *nuevo) { if (cab->primero == NULL) { cab->primero=nuevo; cab->ventana=nuevo; } else { nuevo->sgte=cab->ventana->sgte; cab->ventana->sgte=nuevo; } cab->longitud++; }
Para insertar tengo la siguiente función:
Código C++:
Ver original
void insertar_lista (cabecera *cab, nodoL *nuevo) { if (cab->ventana==cab->primero) { nuevo->sgte=cab->primero; cab->primero=nuevo; } else { nodoL *temp=cab->primero; while(temp->sgte != cab->ventana) { temp=temp->sgte; } nuevo->sgte=cab->ventana; temp->sgte=nuevo; } cab->longitud++; }
imprimo de la forma:
Código C++:
Ver original
//funcion para ubicar ventana en el primer elemento void priventana (cabecera *cab) { cab -> ventana = cab -> primero; } //funcion para imprimir valor void imprimir (cabecera *cab) { priventana(cab); for (int i=1; i<=cab->longitud; i++) { cout << "EL " << i << endl; cout << cab -> ventana -> codigo <<endl; cab -> ventana = cab -> ventana -> sgte; } priventana(cab); }
PRIMER PROBLEMA
Código C++:
Ver original
int eliminar (cabecera *cab, int element) { nodoL *temp=cab->primero; if (element == nuevo->cod) { temp=nuevo; *nuevo=*nuevo->sgte; return element; } else {return 0;} }
Estoy usando como estructura algo así:
Código C++:
Ver original
struct nodoL { int codigo; nodoL *sgte; }; struct cabecera { int longitud; nodoL *primero; nodoL *ventana; };
Bueno alguien me da una pista de como eliminar ???