Advertisement
juanjo12x

Lista_SE

May 22nd, 2014
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef
  5.  
  6. struct nodo{
  7.   int valor;
  8.   struct nodo* ptrSig;
  9. }
  10.  
  11. TNodo;
  12.  
  13. int lista_vacia(TNodo *);
  14. void inserta_inicio(TNodo **, int);
  15. void inserta_final(TNodo **, int);
  16. void inserta_final2(TNodo **, TNodo **, int);
  17. void inserta_orden(TNodo **, int);
  18. void imprime_lista(TNodo *);
  19. void libera_lista(TNodo *);
  20.  
  21. int main(int argc, char** argv) {
  22.     TNodo * ptrListaSE = NULL;
  23.     TNodo * ptrUltimo = NULL;
  24.        
  25.     inserta_orden(&ptrListaSE, 15);
  26.     inserta_orden(&ptrListaSE, 05);
  27.     inserta_orden(&ptrListaSE, 20);
  28.     inserta_orden(&ptrListaSE, 13);
  29.    
  30.     /*    
  31.     inserta_inicio(&ptrListaSE, 15);
  32.     inserta_inicio(&ptrListaSE, 17);
  33.     inserta_inicio(&ptrListaSE, 20);
  34.      *  
  35.     inserta_final(&ptrListaSE, 15);
  36.     inserta_final(&ptrListaSE, 17);
  37.     inserta_final(&ptrListaSE, 20);
  38.    
  39.     inserta_final2(&ptrListaSE, &ptrUltimo, 15);
  40.     inserta_final2(&ptrListaSE, &ptrUltimo, 17);
  41.     inserta_final2(&ptrListaSE, &ptrUltimo, 20);
  42.     */
  43.     imprime_lista(ptrListaSE);
  44.     libera_lista(ptrListaSE);
  45.     return (EXIT_SUCCESS);
  46. }
  47.  
  48. void inserta_inicio(TNodo **ptrListaSE, int valor){
  49.     TNodo *ptrNuevo;
  50.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  51.     ptrNuevo->valor = valor;
  52.     ptrNuevo->ptrSig = *ptrListaSE;
  53.     *ptrListaSE = ptrNuevo;
  54. }
  55.  
  56. void inserta_final(TNodo **ptrListaSE, int valor){
  57.     TNodo *ptrNuevo, *ptrUltimo, *ptrRecorrido;
  58.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  59.     ptrNuevo->valor = valor;
  60.     ptrNuevo->ptrSig = NULL;
  61.    
  62.     ptrRecorrido = *ptrListaSE;
  63.     ptrUltimo = NULL;
  64.     while (ptrRecorrido){
  65.         ptrUltimo = ptrRecorrido;
  66.         ptrRecorrido = ptrRecorrido->ptrSig;
  67.     }
  68.    
  69.     if (ptrUltimo)
  70.         ptrUltimo->ptrSig = ptrNuevo;
  71.     else
  72.         (*ptrListaSE) = ptrNuevo;
  73. }
  74.  
  75. void inserta_final2(TNodo **ptrListaSE, TNodo **ptrUltimo, int valor){
  76.     TNodo *ptrNuevo;
  77.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  78.     ptrNuevo->valor = valor;
  79.     ptrNuevo->ptrSig = NULL;
  80.        
  81.     if (*ptrUltimo)
  82.         (*ptrUltimo)->ptrSig = ptrNuevo;
  83.     else
  84.         (*ptrListaSE) = ptrNuevo;
  85.    
  86.     *ptrUltimo = ptrNuevo;
  87. }
  88.  
  89. void inserta_orden(TNodo **ptrListaSE, int valor){
  90.     TNodo *ptrNuevo, *ptrAnterior, *ptrRecorrido;
  91.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  92.     ptrNuevo->valor = valor;
  93.     ptrNuevo->ptrSig = NULL;
  94.    
  95.     ptrAnterior = NULL;
  96.     ptrRecorrido = *ptrListaSE;
  97.     while (ptrRecorrido && ptrRecorrido->valor < valor){
  98.         ptrAnterior = ptrRecorrido;
  99.         ptrRecorrido = ptrRecorrido->ptrSig;
  100.     }
  101.    
  102.     if (ptrAnterior){
  103.         ptrNuevo->ptrSig = ptrAnterior->ptrSig;
  104.         ptrAnterior->ptrSig = ptrNuevo;
  105.     }
  106.     else{
  107.         ptrNuevo->ptrSig = *ptrListaSE;
  108.         *ptrListaSE = ptrNuevo;
  109.     }        
  110. }
  111.  
  112. int lista_vacia(TNodo * ptrListaSE){
  113.     return ptrListaSE==NULL;
  114. }
  115.  
  116. void imprime_lista(TNodo * ptrListaSE){
  117.     while (ptrListaSE != NULL){
  118.         /*printf(" %d ", (*ptrListaSE).valor);*/
  119.         printf(" %d ", ptrListaSE->valor);        
  120.         ptrListaSE = ptrListaSE->ptrSig;
  121.     }
  122.     printf("NULL\n");
  123. }
  124.  
  125. void libera_lista(TNodo * ptrListaSE){    
  126.     TNodo * ptrEliminar;
  127.     while (ptrListaSE != NULL){
  128.         ptrEliminar = ptrListaSE;                
  129.         ptrListaSE = ptrListaSE->ptrSig;
  130.         free(ptrEliminar);
  131.     }    
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement