Hola gente, estoy haciendo un programa, pero me peque una enrredada ni la mas macha, y ahora no tengo idea como salir.
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 originalvoid 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 originalint 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 originalstruct nodoL
{
int codigo;
nodoL *sgte;
};
struct cabecera
{
int longitud;
nodoL *primero;
nodoL *ventana;
};
Bueno alguien me da una pista de como eliminar ???