Código C++:
Ver original
#include <iostream> using namespace std; class Nodo { public: Nodo(); void capturar(); void mostrar(); void buscar( int ); void eliminar_cola(); void eliminar_pila(); void eliminar_busqueda( int ); private: int num; Nodo * inicio; Nodo * siguiente; Nodo * anterior; Nodo * fin; } n, *z; Nodo::Nodo() { inicio = NULL; fin = NULL; } void Nodo::capturar() { if( inicio == NULL ) { z = new Nodo; inicio = z; fin = inicio; cout << "Inserta un numero: "; cin >> z -> num; z -> siguiente = NULL; } else { z = new Nodo; cout << "Inserta un numero: "; cin >> z -> num; z -> siguiente = NULL; fin -> siguiente = z; fin = z; } } void Nodo::mostrar() { if( inicio == NULL ) { cout << "Lista vacia" << endl; } else { Nodo * aux1 = inicio; while( aux1 != NULL ) { cout << aux1 -> num << endl; aux1 = aux1 -> siguiente; } } } void Nodo::buscar( int b_num ) { Nodo * aux1; int contador = 0; if( inicio == NULL ) { cout << "Lista vacia" << endl; } else { aux1 = inicio; while( aux1 != NULL ) { if( b_num == aux1 -> num ) { contador++; if( contador == 1 ) { cout << "Numeros encontrados: " << endl; } cout << aux1 -> num << endl; aux1 = aux1 -> siguiente; } else { aux1 = aux1 -> siguiente; } } } if( contador == 0 ) { cout << "\nNumero no encontrado" << endl; } } void Nodo::eliminar_cola() { Nodo * aux1 = inicio; if( inicio == NULL ) { cout << "Lista vacia" << endl; } else { if( inicio == fin ) { aux1 = NULL; inicio = NULL; fin = inicio; delete aux1; cout << "El primer elemento de la lista se ha borrado correctamente" << endl; aux1 = NULL; } else { aux1 = inicio; inicio = inicio -> siguiente; aux1 -> siguiente = NULL; delete aux1; cout << "El primer elemento de la lista se ha borrado correctamente" << endl; aux1 = NULL; } } } void Nodo::eliminar_pila() { Nodo * aux1 = inicio; if( inicio == NULL ) { cout << "Lista vacia" << endl; } else { if( inicio == fin ) { aux1 = NULL; inicio = NULL; fin = inicio; delete aux1; cout << "El ultimo elemento de la lista se ha borrado correctamente" << endl; aux1 = NULL; } else { anterior = inicio; aux1 = inicio -> siguiente; while( aux1 != fin ) { aux1 = aux1 -> siguiente; anterior = anterior -> siguiente; } fin = anterior; delete aux1; cout << "El ultimo elemento de la lista se ha borrado correctamente" << endl; aux1 = NULL; fin -> siguiente = NULL; } } } // ESTE ES EL ELIMINAR QUE NO ME SALE void Nodo::eliminar_busqueda( int b_num ) { Nodo * aux1; int contador = 0; if( inicio == NULL ) { cout << "Lista vacia" << endl; } else { aux1 = inicio; while( aux1 != NULL ) { if( b_num == aux1 -> num ) { contador++; delete aux1 ; aux1 = aux1 -> siguiente; } else { aux1 = aux1 -> siguiente; } } } if( contador == 0 ) { cout << "\nNumero no encontrado" << endl; } } enum MENU_PRINCUPAL { CAPTURAR = 1, MOSTRAR, BUSCAR, ELIMINAR, SALIR }; enum SUBMENU_ELIMINAR { COLA = 1, PILA, BUSQUEDA, REGRESAR }; main() { int opcion, b_num; do { cout << "1) CAPTURAR" << endl; cout << "2) MOSTRAR" << endl; cout << "3) BUSCAR" << endl; cout << "4) ELIMINAR" << endl; cout << "5) SALIR" << endl; cout << "\nOPCION: "; cin >> opcion; switch( opcion ) { case CAPTURAR: cout << "\n"; n.capturar(); cout << "\n"; break; case MOSTRAR: cout << "\n"; n.mostrar(); cout << "\n"; break; case BUSCAR: cout << "\nBuscar numero: "; cin >> b_num; n.buscar( b_num ); cout << "\n"; break; case ELIMINAR: cout << "\n"; do { cout << "1) ELIMINAR POR COLA" << endl; cout << "2) ELIMINAR POR PILA" << endl; cout << "3) ELIMINAR POR BUSQUEDA" << endl; cout << "4) REGRESAR" << endl; cout << "\nOPCION: "; cin >> opcion; switch( opcion ) { case COLA: cout << "\n"; n.eliminar_cola(); cout << "\n"; break; case PILA: cout << "\n"; n.eliminar_pila(); cout << "\n"; break; case BUSQUEDA: cout << "\nNumero a eliminar: "; cin >> b_num; n.eliminar_busqueda( b_num ); cout << "\n"; break; default: opcion = REGRESAR; } } while( opcion != REGRESAR ); cout << "\n"; break; default: opcion = SALIR; } } while( opcion != SALIR ); return 0; }