Buenas, quisiera me ayudaran como es la estructura de eliminar un nodo al final de la lista en C++ si pueden pegar el código se los agradecería saludos.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú#include<iostream>
#include<stdlib.h>
using namespace std;
struct Registro{
int cedula;
string nombre;
string apellido;
int edad;
char sexo;
Registro *Rpersona;
};
void menu();
void insertarLista(Registro *&,int c, string n, string a, int e, char s);
void mostrarLista(Registro *);
void buscarLista(Registro *,int c);
void eliminarNodo(Registro *&,int c);
void eliminarLista(Registro *&,int &);
Registro *lista = NULL;
int main(){
menu();
return 0;
}
void menu(){
int opcion,c,e;
string n,a;
char s;
do{
cout<<"\t.:::Proyecto UBV:::.\n";
cout<<"1. Ingresar un Registro a la lista\n";
cout<<"2. Mostrar los Registros de la lista\n";
cout<<"3. Buscar un Registro en la lista\n";
cout<<"4. Eliminar un Registro de la lista\n";
cout<<"5. Dejar vacia la lista\n";
cout<<"6. Salir\n";
cout<<"Opcion: ";
cin>>opcion;
switch(opcion){
case 1: cout<<"\nIngrese un Numero de Cedula: ";
cin>>c;
cout<<"\nIngrese el Nombre: ";
cin>>n;
cout<<"\nIngrese el Apellido: ";
cin>>a;
cout<<"\nIngrese la Edad: ";
cin>>e;
cout<<"\nIngrese el Sexo: ";
cin>>s;
insertarLista(lista,c,n,a,e,s);
cout<<"\n";
system("pause");
break;
case 2: mostrarLista(lista);
cout<<"\n";
system("pause");
break;
case 3: cout<<"\nIngrese el Numero de Cedula a Buscar en el Registro: ";
cin>>c;
buscarLista(lista,c);
cout<<"\n";
system("pause");
break;
case 4: cout<<"\nIngrese el Numero de Cedula a Eliminar del Registro: ";
cin>>c;
eliminarNodo(lista,c);
cout<<"\n";
system("pause");
break;
case 5:
while(lista != NULL){
eliminarLista(lista,c);
cout<<c <<" -> ";
}
cout<<"\n";
system("pause");
break;
}
system("cls");
}while(opcion != 6);
}
void insertarLista(Registro *&,int c, string n, string a, int e, char s){
Registro *nuevo_registro = new Registro();
nuevo_registro->cedula = c;
nuevo_registro->nombre = n;
nuevo_registro->apellido = a;
nuevo_registro->edad = e;
nuevo_registro->sexo = s;
Registro *aux1 = lista;
Registro *aux2;
while((aux1 != NULL) && (aux1->cedula < c), (aux1->nombre < n), (aux1->apellido < a), (aux1->edad < e), (aux1->sexo < s)){
aux2 = aux1;
aux1 = aux1->Rpersona;
}
if(lista == aux1){
lista = nuevo_registro;
}
else{
aux2->Rpersona = nuevo_registro;
}
nuevo_registro->Rpersona = aux1;
cout<<"\tPersona "<<c<<" insertada a la lista correctamente\n";
}
void mostrarLista(Registro *lista){
Registro *actual = new Registro();
actual = lista;
while(actual != NULL){
cout<<actual->cedula<<" -> ";
cout<<actual->nombre<<" -> ";
cout<<actual->apellido<<" -> ";
cout<<actual->edad<<" -> ";
cout<<actual->sexo<<" -> ";
actual = actual->Rpersona;
}
}
void buscarLista(Registro *lista,int c,string n,string a,int e,char s){
bool band = false;
Registro *actual = new Registro();
actual = lista;
while((actual != NULL) && (actual->cedula <= c), (actual->nombre <= n), (actual->apellido <= a),(actual->edad <= e), (actual->sexo <= s)){
if((actual->cedula == c), (actual->nombre == n), (actual->apellido == a), (actual->edad == e), (actual->sexo == s)){
band = true;
}
actual = actual->Rpersona;
}
if(band == true){
cout<<"Persona "<<n<<" SI a sido encontrado en lista\n";
}
else{
cout<<"Persona "<<n<<" NO a sido encontrado en la lista\n";
}
}
void eliminarNodo(Registro *&lista,int c,string n, string a, int e, char s){
if(lista != NULL){
Registro *aux_borrar;
Registro *anterior = NULL;
aux_borrar = lista;
while((aux_borrar != NULL) && (aux_borrar->cedula != c), (aux_borrar->nombre != n), (aux_borrar->apellido != a), (aux_borrar->edad != e), (aux_borrar->sexo != s)){
anterior = aux_borrar;
aux_borrar = aux_borrar->Rpersona;
}
if(aux_borrar == NULL){
cout<<"La persona no ha sido encontrado";
}
else if(anterior == NULL){
lista = lista->Rpersona;
delete aux_borrar;
}
else {
anterior->Rpersona = aux_borrar->Rpersona;
delete aux_borrar;
}
}
}
void eliminarLista(Registro *&lista,int &c, string &n, string &a,int &e, char &s){
Registro *aux = lista;
c = aux->cedula;
n = aux->nombre;
a = aux->apellido;
e = aux->edad;
s = aux->sexo;
lista = aux->Rpersona;
delete aux;
}