Glaas2

lista doble

Mar 5th, 2012
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.      
  4.     typedef struct lista
  5.     {
  6.         int dato;
  7.         struct lista *sig, *ant;
  8.     }listadoble;
  9.      
  10.     void menu(void);
  11.     int opc;
  12.     typedef listadoble *pL;
  13.  
  14.      
  15.      
  16.     int crear(listadoble **pL, int dato)
  17.     {
  18.       if(*pL==NULL)
  19.         return 0;
  20.       *pL=(listadoble *)malloc(sizeof(listadoble));
  21.       if(*pL==NULL)
  22.         return 0;
  23.      (*pL)->dato=dato;
  24.      (*pL)->sig=NULL;
  25.      (*pL)->ant=NULL;
  26.      return 1;
  27.     }
  28.      
  29.     int insertar(listadoble **pL, int dato)
  30.     {
  31.      listadoble *aux=NULL, *nav;
  32.      if(!*pL)
  33.        return 0;
  34.      aux=(listadoble *)malloc(sizeof(listadoble));
  35.      if(!aux)
  36.        return 0;
  37.      aux->dato=dato;
  38.      aux->ant=NULL;
  39.      aux->sig=NULL;
  40.      
  41.      //caso 1 insertar al inicio
  42.      if((*pL)->dato>=dato)
  43.      {
  44.       aux->sig=*pL;
  45.       (*pL)->ant=aux;
  46.       *pL=aux;
  47.       return 1;
  48.      }
  49.      
  50.      nav=*pL;
  51.      //caso 2 en medio de la lista
  52.      //while(nav->dato>dato && nav->sig!=NULL)
  53.       while(nav->sig->dato<dato && nav->sig!=NULL)
  54.         nav=nav->sig;
  55.        nav=nav->sig;
  56.      
  57.       /*aux->ant=nav->ant;
  58.       nav->ant->sig=aux;
  59.       aux->sig=nav;
  60.       nav->ant=aux;*/
  61.      
  62.       aux->ant=nav;
  63.       aux->sig=nav->sig;
  64.       nav->sig->ant=aux;
  65.       nav->sig=aux;
  66.      
  67.       return 1;
  68.      
  69.       if(nav->sig==NULL)//El elemento que llega se debe insertar al final
  70.       {
  71.        aux->ant=nav;
  72.        nav->sig=aux;
  73.        return 1;
  74.       }
  75.     }
  76.      
  77.     int borrar(listadoble **pL, int dato)
  78.     {
  79.       listadoble *aux=NULL, *nav;
  80.        
  81.      
  82.       //caso 1 borrar al inicio
  83.       //aux=*pL;
  84.       nav=*pL;
  85.       if(nav->dato==dato)
  86.       {
  87.        *pL=(*pL)->sig;
  88.        (*pL)->ant=NULL;
  89.        free(nav);
  90.       }
  91.      
  92.       while(nav->dato!=dato && nav->sig!=NULL)
  93.         nav=nav->sig;
  94.       //Caso de no encontrar dato
  95.         if(nav->dato!=dato)
  96.           return 0;
  97.         //caso final
  98.         if(nav->sig==NULL)
  99.           nav->ant->sig=nav->sig;
  100.         free(nav);
  101.         return 1;
  102.      
  103.       nav->ant->sig=nav->sig;
  104.       nav->sig->ant=nav->ant;
  105.       free(nav);
  106.       return 1;
  107.     }
  108.      
  109.      
  110.      
  111.    main()
  112. {
  113.  
  114. menu();
  115. while(opc!=7)
  116. {
  117.  switch(opc)
  118.     {
  119.         case 1:
  120.                 system("clear");
  121.                 printf("\nCrear lista\n\n");
  122.    
  123.        
  124.                 break;
  125.         case 2:
  126.                 system("clear");
  127.                 printf("\nModificar lista\n");
  128.                 break;
  129.         case 3:
  130.                 system("clear");
  131.                 printf("\nBorrar Todo\n");
  132.                 break;
  133.         case 4:
  134.                 system("clear");
  135.                 printf("\nBorrar Elemento\n");
  136.                 break;
  137.         case 5:
  138.                 system("clear");
  139.                 printf("\nInsertar Elemento\n");
  140.                 break;
  141.         case 6:
  142.                 system("clear");
  143.                 printf("\nMostrar todo\n");
  144.                 break;
  145.         default:
  146.                 printf("\n Opcion no reconocida\n");
  147.     }
  148.   main();
  149.    
  150. }
  151.  
  152. }
  153.  
  154. void menu()
  155. {
  156. system("clear");
  157. printf("\n Elija una opcion\n");
  158. printf("1.- Crear Lista\n");
  159. printf("2.- Modificar Lista\n");
  160. printf("3.- Borrar Todo\n");
  161. printf("4.- Borrar Elemento\n");
  162. printf("5.- Insertar Elemento\n");
  163. printf("6.- Mostrar Todo\n");
  164. printf("7.- Salir\n");
  165. printf("Opcion Elegida >_: ");
  166. scanf("%d", &opc);
  167. }
Advertisement
Add Comment
Please, Sign In to add comment