Advertisement
juanjo12x

Lista_DE

May 22nd, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 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* ptrAnt;
  9.   struct nodo* ptrSig;
  10. }
  11.  
  12. TNodo;
  13.  
  14. void inserta_orden(TNodo **, int);
  15. void imprime_lista(TNodo *);
  16.  
  17. int main(int argc, char** argv) {
  18.     TNodo *ptrListaDE = NULL;
  19.    
  20.     inserta_orden(&ptrListaDE, 15);
  21.     inserta_orden(&ptrListaDE, 05);
  22.     inserta_orden(&ptrListaDE, 20);
  23.     inserta_orden(&ptrListaDE, 13);
  24.    
  25.     imprime_lista(ptrListaDE);
  26.    
  27.     return (EXIT_SUCCESS);
  28. }
  29.  
  30. void inserta_orden(TNodo **ptrListaDE, int valor){
  31.     TNodo *ptrNuevo, *ptrAnterior, *ptrRecorrido;
  32.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  33.     ptrNuevo->valor = valor;
  34.     ptrNuevo->ptrAnt = ptrNuevo->ptrSig = NULL;
  35.    
  36.     ptrAnterior = NULL;
  37.     ptrRecorrido = *ptrListaDE;
  38.     while (ptrRecorrido && ptrRecorrido->valor < valor){
  39.         ptrAnterior = ptrRecorrido;
  40.         ptrRecorrido = ptrRecorrido->ptrSig;
  41.     }
  42.    
  43.     if (ptrAnterior){
  44.         ptrNuevo->ptrSig = ptrAnterior->ptrSig;
  45.         if (ptrAnterior->ptrSig)
  46.           ptrAnterior->ptrSig->ptrAnt = ptrNuevo;
  47.        
  48.         ptrAnterior->ptrSig = ptrNuevo;
  49.         ptrNuevo->ptrAnt = ptrAnterior;
  50.     }
  51.     else{
  52.         ptrNuevo->ptrSig = *ptrListaDE;
  53.         if (*ptrListaDE)
  54.           (*ptrListaDE)->ptrAnt = ptrNuevo;
  55.         *ptrListaDE = ptrNuevo;
  56.     }
  57. }    
  58. void imprime_lista(TNodo * ptrLista){
  59.     while (ptrLista != NULL){
  60.         printf(" %d ", ptrLista->valor);        
  61.         ptrLista = ptrLista->ptrSig;
  62.     }
  63.     printf("NULL\n");
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement