Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct lista
- {
- int dato;
- struct lista *sig, *ant;
- }listadoble;
- void menu(void);
- int opc;
- typedef listadoble *pL;
- int crear(listadoble **pL, int dato)
- {
- if(*pL==NULL)
- return 0;
- *pL=(listadoble *)malloc(sizeof(listadoble));
- if(*pL==NULL)
- return 0;
- (*pL)->dato=dato;
- (*pL)->sig=NULL;
- (*pL)->ant=NULL;
- return 1;
- }
- int insertar(listadoble **pL, int dato)
- {
- listadoble *aux=NULL, *nav;
- if(!*pL)
- return 0;
- aux=(listadoble *)malloc(sizeof(listadoble));
- if(!aux)
- return 0;
- aux->dato=dato;
- aux->ant=NULL;
- aux->sig=NULL;
- //caso 1 insertar al inicio
- if((*pL)->dato>=dato)
- {
- aux->sig=*pL;
- (*pL)->ant=aux;
- *pL=aux;
- return 1;
- }
- nav=*pL;
- //caso 2 en medio de la lista
- //while(nav->dato>dato && nav->sig!=NULL)
- while(nav->sig->dato<dato && nav->sig!=NULL)
- nav=nav->sig;
- nav=nav->sig;
- /*aux->ant=nav->ant;
- nav->ant->sig=aux;
- aux->sig=nav;
- nav->ant=aux;*/
- aux->ant=nav;
- aux->sig=nav->sig;
- nav->sig->ant=aux;
- nav->sig=aux;
- return 1;
- if(nav->sig==NULL)//El elemento que llega se debe insertar al final
- {
- aux->ant=nav;
- nav->sig=aux;
- return 1;
- }
- }
- int borrar(listadoble **pL, int dato)
- {
- listadoble *aux=NULL, *nav;
- //caso 1 borrar al inicio
- //aux=*pL;
- nav=*pL;
- if(nav->dato==dato)
- {
- *pL=(*pL)->sig;
- (*pL)->ant=NULL;
- free(nav);
- }
- while(nav->dato!=dato && nav->sig!=NULL)
- nav=nav->sig;
- //Caso de no encontrar dato
- if(nav->dato!=dato)
- return 0;
- //caso final
- if(nav->sig==NULL)
- nav->ant->sig=nav->sig;
- free(nav);
- return 1;
- nav->ant->sig=nav->sig;
- nav->sig->ant=nav->ant;
- free(nav);
- return 1;
- }
- main()
- {
- menu();
- while(opc!=7)
- {
- switch(opc)
- {
- case 1:
- system("clear");
- printf("\nCrear lista\n\n");
- break;
- case 2:
- system("clear");
- printf("\nModificar lista\n");
- break;
- case 3:
- system("clear");
- printf("\nBorrar Todo\n");
- break;
- case 4:
- system("clear");
- printf("\nBorrar Elemento\n");
- break;
- case 5:
- system("clear");
- printf("\nInsertar Elemento\n");
- break;
- case 6:
- system("clear");
- printf("\nMostrar todo\n");
- break;
- default:
- printf("\n Opcion no reconocida\n");
- }
- main();
- }
- }
- void menu()
- {
- system("clear");
- printf("\n Elija una opcion\n");
- printf("1.- Crear Lista\n");
- printf("2.- Modificar Lista\n");
- printf("3.- Borrar Todo\n");
- printf("4.- Borrar Elemento\n");
- printf("5.- Insertar Elemento\n");
- printf("6.- Mostrar Todo\n");
- printf("7.- Salir\n");
- printf("Opcion Elegida >_: ");
- scanf("%d", &opc);
- }
Advertisement
Add Comment
Please, Sign In to add comment