Advertisement
pmanriquez93

Pregunta 3 - Lista, Pilas y Colas

May 26th, 2014
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.24 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. typedef int TElemento;
  5.  
  6. typedef struct nodo{
  7.     TElemento elem;
  8.     struct nodo* ptrSig;
  9.     struct nodo* ptrAnt;
  10. }TNodo;
  11.  
  12. typedef struct {
  13.     TNodo *inicio;
  14.     TNodo *fin;
  15.     int cantElem;
  16. }TLista;
  17.  
  18. void crearLista(TLista *);
  19.  
  20. void insertaInicio(TLista *,TElemento);
  21.  
  22. void insertaFin(TLista *,TElemento);
  23.  
  24. void borraInicio(TLista *);
  25.  
  26. void borraFin(TLista *);
  27.  
  28. void imprimirLista(TLista *);
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. int main(void){
  37.     TLista lista;
  38.     crearLista(&lista);
  39.  
  40.     insertaInicio(&lista,3);
  41.     insertaInicio(&lista,32);
  42.     insertaInicio(&lista,7);
  43.     insertaInicio(&lista,4);
  44.     insertaInicio(&lista,8);
  45.    
  46.     imprimirLista(&lista);
  47.    
  48.     insertaFin(&lista,4);
  49.     insertaFin(&lista,4);
  50.     insertaFin(&lista,4);
  51.     insertaFin(&lista,4);
  52.     insertaFin(&lista,5);
  53.     insertaFin(&lista,6);
  54.     insertaFin(&lista,9);
  55.    
  56.     imprimirLista(&lista);
  57.    
  58.     printf("Numero de elementos %d\n",lista.cantElem);
  59.    
  60.     borraInicio(&lista);
  61.     borraInicio(&lista);
  62.    
  63.     imprimirLista(&lista);
  64.     printf("Numero de elementos %d\n",lista.cantElem);
  65.    
  66.     borraFin(&lista);
  67.     borraFin(&lista);
  68.    
  69.     imprimirLista(&lista);
  70.     printf("Numero de elementos %d\n",lista.cantElem);
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77. void crearLista(TLista *lista){
  78.     lista->inicio = NULL;
  79.     lista->fin = NULL;
  80.     lista->cantElem = 0;
  81. }
  82.  
  83. void insertaInicio(TLista *lista,TElemento elem){
  84.     TNodo *ptrNuevo;
  85.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  86.    
  87.     ptrNuevo->elem = elem;
  88.     ptrNuevo->ptrAnt = NULL;
  89.     ptrNuevo->ptrSig = NULL;
  90.     if (lista->cantElem == 0){
  91.         lista->fin = ptrNuevo;
  92.     lista->inicio = ptrNuevo;
  93.     }else{
  94.     lista->inicio->ptrAnt = ptrNuevo;
  95.     ptrNuevo->ptrSig = lista->inicio;
  96.     lista->inicio = ptrNuevo;
  97.     }      
  98.     (lista->cantElem)++;    
  99. }
  100.  
  101. void insertaFin(TLista *lista,TElemento elem){
  102.     TNodo *ptrNuevo;
  103.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  104.    
  105.     ptrNuevo->elem = elem;
  106.     ptrNuevo->ptrAnt = NULL;
  107.     ptrNuevo->ptrSig = NULL;
  108.     if (lista->cantElem == 0){
  109.         lista->inicio = ptrNuevo;
  110.     }else{
  111.     lista->fin->ptrSig = ptrNuevo;
  112.     ptrNuevo->ptrAnt = lista->fin;
  113.     lista->fin = ptrNuevo;
  114.     }
  115.     (lista->cantElem)++;    
  116. }
  117.  
  118. void borraInicio(TLista *lista){
  119.     TNodo *ptrEliminar;
  120.     if (lista->inicio != NULL){
  121.         ptrEliminar = lista->inicio;   
  122.     if (lista->cantElem == 1){
  123.         lista->inicio = NULL;
  124.         lista->fin = NULL;
  125.     }else{
  126.         lista->inicio = lista->inicio->ptrSig;
  127.         //lista->inicio->ptrAnt = NULL;
  128.     }      
  129.         //free(ptrEliminar);
  130.     (lista->cantElem)--;    
  131.      }else{
  132.         printf("No se puede borrar de una cola vacia");
  133.         }
  134.     }
  135.  
  136. void borraFin(TLista *lista){
  137.     TNodo *ptrEliminar;
  138.    
  139.     if (lista->inicio != NULL){
  140.         ptrEliminar = lista->fin;
  141.     if (lista->cantElem == 1){
  142.         lista->inicio = NULL;
  143.         lista->fin = NULL;
  144.     }else{
  145.         lista->fin = lista->fin->ptrAnt;
  146.         lista->fin->ptrSig = NULL;
  147.     }
  148.     free(ptrEliminar);
  149.     (lista->cantElem)--;
  150.     }else{
  151.     printf("No se puede borrar de una cola vacia");
  152.     }
  153.  
  154. }
  155.  
  156. void imprimirLista(TLista *lista){
  157.     TNodo *ptrRec;  
  158.     ptrRec = lista->inicio;
  159.     while (ptrRec != NULL){
  160.         printf(" %d -> ",ptrRec->elem);
  161.         ptrRec = ptrRec->ptrSig;
  162.     }
  163.     printf("NULL\n");
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement