comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C] Agenda con listas enlazadas

  • 0 Respuestas
  • 2995 Vistas

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado mr.blood

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
  • Skype: red_ink@hotmail.es
« en: Junio 11, 2013, 03:14:13 am »
EDITO: Sorry, Google me trolleó este código no es mío es de myguestp lo confundí con uno mío muy parecido. Todos los créditos a él.



Traigo este código como un pequeño ejemplo de listas enlazadas. Lo hice hace ya un par de años así que seguramente no lo volvería a hacer igual :P.

Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define ID_NAME 60
  6. #define ID_APELLIDO1 61
  7. #define ID_APELLIDO2 62
  8. #define ID_TELEFONO 63
  9.  
  10.  
  11. typedef struct lista
  12. {
  13.     char nombre[10], apellido1[10], apellido2[10], telefono[10];
  14.     struct lista *siguiente;
  15. }lista;
  16.  
  17. lista *primero=NULL, *ultimo=NULL;
  18.  
  19. void cls();
  20. void pause();
  21. void delnewline(char *array);
  22. void additem();
  23. void recorrer();
  24. bool finditem(char *word, int flag);
  25.  
  26. int main()
  27. {
  28.     int opc, id;
  29.     char word[10], op[10];
  30.     lista *aux;
  31.    
  32.     while(opc!=4)
  33.     {
  34.         You are not allowed to view links. Register or Login("Indica que hacer:\n\n 1.Introducir contacto\n 2.Recorrer agenda\n 3.Buscar contacto\n 4.Salir\n\n");
  35.         You are not allowed to view links. Register or Login("%i", &opc);
  36.         cls();
  37.         switch(opc)
  38.         {
  39.             case 1:
  40.                 additem();
  41.             break;
  42.             case 2:
  43.                 recorrer();
  44.                 pause();
  45.             break;
  46.             case 3:
  47.                 You are not allowed to view links. Register or Login("Indica por que criterio buscar(nombre, apellido1, apellido2 o telefono): ");
  48.                 You are not allowed to view links. Register or Login("%s", op);
  49.                 delnewline(op);
  50.                 if(You are not allowed to view links. Register or Login(op, "nombre")==0) id=ID_NAME;
  51.                 else if(You are not allowed to view links. Register or Login(op, "apellido1")==0) id=ID_APELLIDO1;
  52.                 else if(You are not allowed to view links. Register or Login(op, "apellido2")==0) id=ID_APELLIDO2;
  53.                 else if(You are not allowed to view links. Register or Login(op, "telefono")==0) id=ID_TELEFONO;
  54.                 else break;
  55.                 cls();
  56.                 You are not allowed to view links. Register or Login("Indica la palabra a buscar:\n\n");
  57.                 You are not allowed to view links. Register or Login("%s", word);
  58.                 cls();
  59.                 finditem(word, id);
  60.                 pause();
  61.             break;
  62.             case 4:
  63.             break;
  64.             default:
  65.                 You are not allowed to view links. Register or Login("Elije una opcion correcta");
  66.             break;
  67.         }
  68.         cls();
  69.     }
  70.     aux=primero;
  71.     while(aux!=NULL)
  72.     {
  73.         You are not allowed to view links. Register or Login(aux);
  74.         aux=aux->siguiente;
  75.     }
  76.     return 0;
  77. }
  78.  
  79. void cls()
  80. {
  81.     #ifndef WIN32
  82.      You are not allowed to view links. Register or Login("clear");
  83.     #else
  84.      You are not allowed to view links. Register or Login("cls");
  85.     #endif
  86. }
  87.  
  88. void pause()
  89. {
  90.     You are not allowed to view links. Register or Login(stdin, NULL);
  91.     You are not allowed to view links. Register or Login();
  92. }
  93. void delnewline(char *array)
  94. {
  95.     while(*array!='\0')
  96.     {
  97.         if(*array=='\n')
  98.         {
  99.             *array='\0';
  100.         }
  101.         array++;
  102.     }
  103. }
  104.  
  105. void additem()
  106. {
  107.     lista *nuevo;
  108.     nuevo=(lista*)You are not allowed to view links. Register or Login(sizeof(lista));
  109.     You are not allowed to view links. Register or Login("Introduce el nombre completo(ejemplo: Miguel Ruiz Cruz):\n\n");
  110.     You are not allowed to view links. Register or Login("%s %s %s", nuevo->nombre, nuevo->apellido1, nuevo->apellido2);
  111.     You are not allowed to view links. Register or Login("\nIntroduce ahora el numero de telefono(9 cifras): ");
  112.     You are not allowed to view links. Register or Login("%s", nuevo->telefono);
  113.     cls();
  114.     delnewline(nuevo->nombre);
  115.     delnewline(nuevo->apellido1);
  116.     delnewline(nuevo->apellido2);
  117.     delnewline(nuevo->telefono);
  118.     if(primero==NULL)
  119.     {
  120.         primero=(lista*)You are not allowed to view links. Register or Login(sizeof(lista));
  121.         ultimo=(lista*)You are not allowed to view links. Register or Login(sizeof(lista));
  122.         if(!primero || !ultimo)
  123.         {
  124.             You are not allowed to view links. Register or Login("No se pudo reservar memoria para el item");
  125.             return;
  126.         }
  127.         primero=nuevo;
  128.         primero->siguiente=ultimo;
  129.         ultimo=nuevo;
  130.         ultimo->siguiente=NULL;
  131.         return;
  132.     }
  133.     ultimo->siguiente=nuevo;
  134.     ultimo=nuevo;
  135.     ultimo->siguiente=NULL;
  136.     return;
  137. }
  138.  
  139. void recorrer()
  140. {
  141.     lista *aux;
  142.     aux=primero;
  143.     if(aux==NULL)
  144.     {
  145.         You are not allowed to view links. Register or Login("Lista vacia");
  146.         return;
  147.     }
  148.     while(aux!=NULL)
  149.     {
  150.         You are not allowed to view links. Register or Login("Nombre: %s %s %s  Telefono: %s\n\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
  151.         aux=aux->siguiente;
  152.     }
  153.     return;
  154. }
  155.  
  156. bool finditem(char *word, int flag)
  157. {
  158.     lista *aux;
  159.     int cont=0;
  160.     aux=primero;
  161.     if(aux==NULL)
  162.     {
  163.         return false;
  164.     }
  165.     if(flag==ID_NAME)
  166.     {
  167.         while(aux!=NULL)
  168.         {
  169.             if(You are not allowed to view links. Register or Login(aux->nombre, word)==0)
  170.             {
  171.                 You are not allowed to view links. Register or Login("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
  172.                 cont++;
  173.             }
  174.             aux=aux->siguiente;
  175.         }
  176.     }
  177.     else if(flag==ID_APELLIDO1)
  178.     {
  179.         while(aux!=NULL)
  180.         {
  181.             if(You are not allowed to view links. Register or Login(aux->apellido1, word)==0)
  182.             {
  183.                 You are not allowed to view links. Register or Login("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
  184.                 cont++;
  185.             }
  186.             aux=aux->siguiente;
  187.         }
  188.     }
  189.     else if(flag==ID_APELLIDO2)
  190.     {
  191.         while(aux!=NULL)
  192.         {
  193.             if(You are not allowed to view links. Register or Login(aux->apellido2, word)==0)
  194.             {
  195.                 You are not allowed to view links. Register or Login("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
  196.                 cont++;
  197.             }
  198.             aux=aux->siguiente;
  199.         }
  200.     }
  201.     else if(flag==ID_TELEFONO)
  202.     {
  203.         while(aux!=NULL)
  204.         {
  205.             if(You are not allowed to view links. Register or Login(aux->telefono, word)==0)
  206.             {
  207.                 You are not allowed to view links. Register or Login("Nombre: %s %s %s Telefono: %s\n", aux->nombre, aux->apellido1, aux->apellido2, aux->telefono);
  208.                 cont++;
  209.             }
  210.             aux=aux->siguiente;
  211.         }
  212.     }
  213.     if(cont==0)
  214.     {
  215.         You are not allowed to view links. Register or Login("No se encontraron resultados");
  216.         return false;
  217.     }
  218.     You are not allowed to view links. Register or Login("\nSe encontraron %i resultados", cont);
  219.     return true;
  220. }

Sa1uDoS
« Última modificación: Febrero 08, 2014, 05:38:35 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!