Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include<stdio.h>
- #include <fstream>
- using namespace std;
- class Nodo {
- public:
- string nombre;
- string id;
- string apellido;
- string ruta;
- int num;
- friend class Rutas;
- Nodo *anterior;
- Nodo *siguiente;
- Nodo()
- {
- num=1;
- nombre="";
- id= "";
- apellido= "";
- ruta="";
- anterior=NULL;
- siguiente=NULL;
- }
- int vacia(Nodo *lista )
- {
- if(lista==NULL)
- return 1;
- else
- return 0;
- }
- Nodo *InsertarAlPrincipio(Nodo *lista)
- {
- //cout<<sizeof(Nodo)/sizeof(lista)<<endl;
- Nodo *temp=new Nodo();
- if(vacia(lista))
- {
- cout<<" Ingrese el Nombre :"<<endl;
- cin>>temp->nombre;
- cin.ignore();
- cout<<" Ingrese el apellido :"<<endl;
- cin>>temp->apellido;
- cin.ignore();
- cout<<" Ingrese el ID: "<<endl;
- cin>>temp->id;
- cout<<" Ingrese el Ruta: "<<endl;
- cin>>temp->ruta;
- temp->num;
- lista=temp;
- }
- else{
- cout<<" Dame tu nombre "<<endl;
- cin>>temp->nombre;
- cin.ignore();
- cout<<" Dame tu apellido "<<endl;
- cin>>temp->apellido;
- cin.ignore();
- cout<<" Dame tu ID"<<endl;
- cin>>temp->id;
- cout<<" Dame tu Ruta"<<endl;
- cin>>temp->ruta;
- temp->num++;
- lista->anterior=temp;
- temp->siguiente=lista;
- lista=temp;
- }
- cout<<"\t \t Conductor numero ["<<temp->num<<"]"<<endl;
- cout<<"\t \t El nombre es : -> "<<lista->nombre<<endl;
- cout<<"\t \t El Apellido es : -> "<<lista->apellido<<endl;
- cout<<"\t \t El Id es -> "<<lista->id<<endl;
- cout<<"\t \t La ruta es : -> "<<lista->ruta<<endl;
- return lista;
- }
- /*
- Nodo *InsertarF(Nodo *lista)
- {
- Nodo *temp=new Nodo();
- if (vacia(lista))
- {
- cout<<"Inserte el elemento "<<endl;
- cin>>temp->dato;
- lista=temp;
- cout<<"\t \t Se ingreso el elemento correctamente -> "<<lista->dato<<endl;
- }
- else{
- while(lista->siguiente!=NULL)
- {
- lista=lista->siguiente; //Lo avanza
- }
- lista->siguiente=temp;
- temp->anterior=lista;
- cout<<"Inserte el elemento"<<endl;
- cin>>temp->dato;
- lista=temp;
- cout<<"El dato se ingreso correctamente !!-> " <<lista->dato;
- while(lista->anterior!=NULL)
- {
- lista=lista->anterior;
- }
- }
- return lista;
- }
- */
- int Contar(Nodo *lista)
- {
- Nodo *aux=lista;
- int contar=0;
- while(aux!=NULL)
- {
- contar++;
- aux=aux->siguiente;
- }
- return contar;
- }
- Nodo *Eliminacion(Nodo *lista, string id1)
- {
- //cout<<"Entre1"<<endl;
- Nodo *aux=NULL;
- Nodo *temp_borrar=new Nodo();
- temp_borrar=lista;
- while((temp_borrar!=NULL)&&(temp_borrar->id!=id1))
- {
- aux=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- if(temp_borrar==NULL)
- {
- cout<<"Elemento no encontrado"<<endl;
- }
- else if(aux==NULL){
- lista=lista->siguiente;
- delete temp_borrar;
- }
- else{
- aux->siguiente=temp_borrar->siguiente;
- delete temp_borrar;
- }
- /* if(pos==1)
- {
- // cout<<"Entre"<<endl;
- // Nodo *temp_borrar=new Nodo();
- Nodo *temp_borrar;
- temp_borrar=lista;
- lista=temp_borrar->siguiente;
- delete temp_borrar;
- }
- else if(pos==(Contar(lista)))
- {
- Nodo *temp_borrar=new Nodo();
- temp_borrar=lista;
- Nodo *ante=new Nodo();
- while(temp_borrar->siguiente!=NULL)
- {
- ante=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- ante->siguiente=temp_borrar->siguiente;
- delete temp_borrar;
- }
- else if(pos>1&&pos<(Contar(lista)+1))
- {
- Nodo *temp_borrar=new Nodo();
- Nodo *ante= new Nodo();
- temp_borrar=lista;
- for(int i=1;i<pos;i++)
- {
- ante=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- ante->siguiente=temp_borrar->siguiente;
- temp_borrar->anterior=ante;
- delete temp_borrar;
- }
- else if(pos<0||pos>(Contar(lista)+2))
- {
- cout<<"No valido "<<endl;
- }
- /* else{
- while((temp!=NULL)&&(temp->dato!=n))
- {
- anterior=temp;
- temp=temp->siguiente;
- }
- if(temp==NULL)
- {
- cout<<RED<<"Elemento no encontrado"<<RESET<<endl;
- }
- else if(anterior==NULL)
- {
- lista=lista->siguiente;
- cout<<"\t \tNumero borrado -> "<<temp->dato;
- delete temp;
- }
- else {
- anterior->siguiente=temp->siguiente;
- delete temp;
- }
- }*/
- return lista;
- }
- /*Nodo *Mostrarnodo(Nodo *lista){
- cout<<"\t \t Elemento insertado -> "<<lista->nombre<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista->id<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista->apellido<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista->ruta<<endl;
- }*/
- Nodo *Modificar(Nodo *lista, string id){
- Nodo *temp=new Nodo();
- temp=lista;
- while((temp!=NULL)&&(temp->id!=id))
- {temp=temp->siguiente;}
- if(temp==NULL)
- {
- cout<<"NO se encontre el id"<<endl;
- }
- else{
- int opc;
- string ape;
- string idd;
- string ru;
- string nom;
- cout<<"Elija que quiere cambiar \n1.-Nombre\n2.-Apellido\n3.-ID\n4Ruta";
- cin>>opc;
- switch(opc){
- case 1:
- cout<<"Dame el nombre"<<endl;
- cin>>nom;
- temp->nombre=nom;
- break;
- case 2:
- cout<<"Dame el apellido"<<endl;
- cin>>ape ;
- temp->apellido=ape;
- break;
- case 3:
- cout<<"Dame el id"<<endl;
- cin>>idd;
- temp->id=idd;
- break;
- case 4:
- cout<<"Dame la Ruta"<<endl;
- cin>> ru;
- temp->ruta=ru;
- break;
- }
- cout<<"Cambiado a "<<opc<<endl;
- }
- return lista;
- }
- Nodo *Mostrar(Nodo *lista)
- {
- if (vacia(lista)){
- cout<<"\t \t La Lista esta vacia"<<endl;
- }else{
- Nodo *temp=new Nodo();
- temp=lista;
- while(temp!=NULL){
- cout<<"***************************"<<endl;
- cout<<"Conductor numero ["<<temp->num<<"]"<<endl;
- cout<<"NOMBRE ->"<<temp->nombre<<" \n";
- cout<<"Apellido -> "<<temp->apellido<<"\n";
- cout<<"ID -> "<<temp->id<<"\n";
- cout<<"Ruta ->"<<temp->ruta<<"\n";
- cout<<"****************************"<<endl;
- temp=temp->siguiente;
- }
- }
- return lista;
- }
- };
- class Rutas{
- public:
- string origen;
- string id;
- string destino;
- string ruta;
- int num;
- Nodo *ID;
- Rutas *anterior;
- Rutas *siguiente;
- Rutas()
- {
- num=1;
- origen="";
- id="";
- destino= "";
- ruta="";
- anterior=NULL;
- siguiente=NULL;
- }
- int vacia(Rutas *lista2 )
- {
- if(lista2==NULL)
- return 1;
- else
- return 0;
- }
- Rutas *Agregar(Rutas *lista2){
- Rutas *temp=new Rutas();
- if(vacia(lista2))
- {
- cout<<" Ingrese el Origen: :)"<<endl;
- cin>>temp->origen;
- cin.ignore();
- cout<<" Ingrese el Destino:"<<endl;
- cin>>temp->destino;
- cin.ignore();
- cout<<" Ingrese el ID: "<<endl;
- cin>>temp->id;
- cin.ignore();
- cout<<" Ingrese el Ruta: "<<endl;
- cin>>temp->ruta;
- temp->num+1;
- lista2=temp;
- }
- else{
- cout<<" Ingrese el Origen:"<<endl;
- cin>>temp->origen;
- cin.ignore();
- cout<<" Ingrese el Destino:"<<endl;
- cin>>temp->destino;
- cin.ignore();
- cout<<" Ingrese el ID: "<<endl;
- cin>>temp->id;
- cin.ignore();
- cout<<" Ingrese el Ruta: "<<endl;
- cin>>temp->ruta;
- temp->num++;
- lista2->anterior=temp;
- temp->siguiente=lista2;
- lista2=temp;
- }
- cout<<"\t \t Conductor numero ["<<temp->num<<"]"<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista2->origen<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista2->destino<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista2->id<<endl;
- cout<<"\t \t Elemento insertado -> "<<lista2->ruta<<endl;
- return lista2;
- }
- Rutas *Mostrar(Rutas *lista2){
- Rutas *temp=new Rutas();
- if(vacia(lista2))
- {
- cout<<"\t \tLista Vacia"<<endl;
- }
- else{
- temp=lista2;
- while(temp!=NULL){
- cout<<"***************************"<<endl;
- cout<<"EL origen es -> "<<temp->origen<<endl;
- cout<<"El destino es -> "<<temp->destino<<endl;
- cout<<"El ID es -> "<<temp->id<<endl;
- cout<<"La ruta es -> "<<temp->ruta<<endl;
- cout<<"***************************"<<endl;
- temp=temp->siguiente;
- }
- }
- return lista2;
- }
- Rutas *Eliminacion(Rutas *lista2, string id1)
- {
- Rutas *aux=NULL;
- Rutas *temp_borrar=new Rutas();
- temp_borrar=lista2;
- while((temp_borrar!=NULL)&&(temp_borrar->id!=id1))
- {
- aux=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- if(temp_borrar==NULL)
- {
- cout<<"Elemento no encontrado"<<endl;
- }
- else if(aux==NULL){
- lista2=lista2->siguiente;
- delete temp_borrar;
- }
- else{
- aux->siguiente=temp_borrar->siguiente;
- delete temp_borrar;
- }
- /* if(pos==1)
- {
- // cout<<"Entre"<<endl;
- // Nodo *temp_borrar=new Nodo();
- Nodo *temp_borrar;
- temp_borrar=lista;
- lista=temp_borrar->siguiente;
- delete temp_borrar;
- }
- else if(pos==(Contar(lista)))
- {
- Nodo *temp_borrar=new Nodo();
- temp_borrar=lista;
- Nodo *ante=new Nodo();
- while(temp_borrar->siguiente!=NULL)
- {
- ante=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- ante->siguiente=temp_borrar->siguiente;
- delete temp_borrar;
- }
- else if(pos>1&&pos<(Contar(lista)+1))
- {
- Nodo *temp_borrar=new Nodo();
- Nodo *ante= new Nodo();
- temp_borrar=lista;
- for(int i=1;i<pos;i++)
- {
- ante=temp_borrar;
- temp_borrar=temp_borrar->siguiente;
- }
- ante->siguiente=temp_borrar->siguiente;
- temp_borrar->anterior=ante;
- delete temp_borrar;
- }
- else if(pos<0||pos>(Contar(lista)+2))
- {
- cout<<"No valido "<<endl;
- }
- /* else{
- while((temp!=NULL)&&(temp->dato!=n))
- {
- anterior=temp;
- temp=temp->siguiente;
- }
- if(temp==NULL)
- {
- cout<<RED<<"Elemento no encontrado"<<RESET<<endl;
- }
- else if(anterior==NULL)
- {
- lista=lista->siguiente;
- cout<<"\t \tNumero borrado -> "<<temp->dato;
- delete temp;
- }
- else {
- anterior->siguiente=temp->siguiente;
- delete temp;
- }
- }*/
- return lista2;
- }
- Rutas *Modificar(Rutas *lista2, string id){
- Rutas *temp=new Rutas();
- temp=lista2;
- while((temp!=NULL)&&(temp->id!=id))
- {temp=temp->siguiente;}
- if(temp==NULL)
- {
- cout<<"NO se encontre el id"<<endl;
- }
- else{
- int opc;
- string orig;
- string idd;
- string ru;
- string nom;
- cout<<"Elija que quiere cambiar \n1.-Nombre\n2.-Apellido\n3.-ID\n4.-Ruta"<<endl;
- cin>>opc;
- switch(opc){
- case 1:
- cout<<"Dame el origen"<<endl;
- cin>>orig;
- temp->origen=orig;
- cout<<"Cambiado a "<<temp->origen<<endl;
- break;
- case 2:
- cout<<"Dame el destino"<<endl;
- cin>>idd ;
- temp->destino=idd;
- cout<<"Cambiado a "<<temp->destino<<endl;
- break;
- case 3:
- cout<<"Dame el id"<<endl;
- cin>>idd;
- temp->id=idd;
- cout<<"Cambiado a "<<temp->id<<endl;
- break;
- case 4:
- cout<<"Dame la Ruta"<<endl;
- cin>> ru;
- temp->ruta=ru;
- cout<<"Cambiado a "<<temp->ruta<<endl;
- break;
- default:
- cout<<"Elija una opcion correcta"<<endl;
- }
- }
- return lista2;
- }
- };
- int main()
- {
- Nodo *lista=NULL;
- int pos=0;
- int valor=0;
- Nodo y;
- Rutas *lista2=NULL;
- Rutas x;
- int n=0;
- short op=0;
- short pop=0;
- short op2=0;
- string id1;
- bool salir=false;
- while(!salir)
- {
- op=0;
- op=2;
- cout<<"\n1.-Insertar Usuarios\n2.-Insertar Rutas\n3-.Salir "<<endl;
- cout<<"--> ";
- cin>>pop;
- switch(pop)
- {
- case 1:
- while(op != 5)
- {
- system("cls");
- cout<<"\n1.-Desea agregar a un usuario\n2.-Eliminar\n3.-Mostrar\n4.-Modificar\n5.-Salir"<<endl;
- cout<<"--> ";
- cin>>op;
- switch(op)
- {
- case 1:
- lista=y.InsertarAlPrincipio(lista);
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- case 2:
- if(y.vacia(lista))
- {
- cout<<"Vacia"<<endl;
- }
- else{
- cout<<"Ingrese un posicion"<<endl;
- cin>>id1;
- lista=y.Eliminacion(lista,id1);
- }
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- case 3:
- lista=y.Mostrar(lista);
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- case 4:
- if(y.vacia(lista))
- {
- cout<<"Vacia"<<endl;
- }
- else{
- cout<<"Dame el ID"<<endl;
- cin>>id1;
- lista=y.Modificar(lista,id1);
- }
- cout<<"\n";
- system("pause");
- system("cls");
- // systemm();
- //cin.get();
- // clear();
- case 5:
- system("cls");
- break;
- default:
- cout<<"Numero invalido"<<endl;
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- }
- }
- break;
- case 2:
- while(op2!=5){
- system("cls");
- cout<<"\n1.-Desea agregar a un Ruta\n2.-Eliminar\n3.-Mostrar\n4.-Modificar\n5.-Volver"<<endl;
- cout<<"-> ";
- cin>>op2;
- switch(op2)
- {
- case 1:
- lista2=x.Agregar(lista2);
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- case 2:
- if(x.vacia(lista2))
- {
- cout<<"Esta vacio"<<endl;
- }
- else{
- cout<<"Intruduzca el Id de la ruta que quiere eliminar"<<endl;
- cin>>id1;
- lista2=x.Eliminacion(lista2,id1);
- }
- system("pause");
- system("cls");
- break;
- case 3:
- lista2=x.Mostrar(lista2);
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- case 4:
- if(x.vacia(lista2)){
- cout<<"Lista vacia"<<endl;
- }
- else{
- cout<<"Intrudzca el ID del la ruta que quiere eliminar"<<endl;
- cin>>id1;
- lista2=x.Modificar(lista2,id1);}
- system("pause");
- system("cls");
- break;
- case 5:
- system("cls");
- break;
- default:
- cout<<"Numero invalido"<<endl;
- cout<<"\n";
- system("pause");
- system("cls");
- break;
- }
- }
- system("cls");
- break;
- case 3:
- salir=true;
- cout<<endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement