Advertisement
pmanriquez93

Pregunta 14 - Listas, Pilas y Colas

Jul 2nd, 2014
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. /* CABECERA */
  2.  
  3. #ifndef PREG14_H
  4. #define PREG14_H
  5.  
  6. typedef int TElemento;
  7.  
  8. typedef struct nodo{
  9.     TElemento elem;
  10.     struct nodo* ptrSig;
  11. }TNodo;
  12.  
  13. typedef struct{
  14.     TNodo *inicio;
  15.     TNodo *mitad;
  16. }TLista;
  17.  
  18. void crear(TLista*);
  19.  
  20. void insertar(TLista*, TElemento);
  21.  
  22. void imprimir(TLista*);
  23.  
  24. void eliminarMitad(TLista*);
  25.  
  26. #endif  /* PREG14_H */
  27.  
  28.  
  29.  
  30.  
  31. /* IMPLEMENTACION */
  32.  
  33. #include <stdlib.h>
  34. #include <stdio.h>
  35. #include "preg14.h"
  36.  
  37. void crear(TLista *lista){
  38.     lista->inicio = NULL;    
  39. }
  40.  
  41. void insertar(TLista *lista, TElemento elem){
  42.     TNodo *ptrNuevo;
  43.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  44.    
  45.     ptrNuevo->elem = elem;
  46.     ptrNuevo->ptrSig = NULL;
  47.    
  48.     if (lista->inicio == NULL){
  49.         lista->inicio = ptrNuevo;
  50.     }else{
  51.         ptrNuevo->ptrSig = lista->inicio;
  52.         lista->inicio = ptrNuevo;
  53.     }
  54. }
  55.  
  56. void imprimir(TLista *lista){
  57.     TNodo *ptrRec;  
  58.     ptrRec = lista->inicio;
  59.    
  60.     while (ptrRec != NULL){
  61.         printf(" %d ",ptrRec->elem);
  62.         ptrRec = ptrRec->ptrSig;
  63.     }
  64.     printf("NULL\n");
  65. }
  66.  
  67. void eliminarMitad(TLista* lista){
  68.     TNodo *ptrAux;
  69.     ptrAux = lista->inicio;
  70.     int i; // Si tuviera un cantElem, seria mejor
  71.     for(i=0;i<4;i++)
  72.         ptrAux = ptrAux->ptrSig;
  73.     lista->mitad = ptrAux;
  74.    
  75.    
  76.     TNodo *ptrEliminar;
  77.     ptrEliminar = lista->mitad->ptrSig;
  78.            
  79.     lista->mitad->elem = lista->mitad->ptrSig->elem;
  80.     lista->mitad->ptrSig = ptrEliminar->ptrSig;
  81.    
  82.     free(ptrEliminar);
  83. }
  84.  
  85.  
  86.  
  87.  
  88. /* MAIN */
  89.  
  90. #include <stdio.h>
  91. #include <stdlib.h>
  92. #include "preg14.h"
  93.  
  94. int main(int argc, char** argv) {
  95.    
  96.     TLista lista;
  97.     crear(&lista);
  98.    
  99.     insertar(&lista,4);
  100.     insertar(&lista,6);
  101.     insertar(&lista,1);
  102.     insertar(&lista,7);
  103.     insertar(&lista,9);
  104.     insertar(&lista,23);
  105.     insertar(&lista,21);
  106.     insertar(&lista,11);
  107.    
  108.     imprimir(&lista);
  109.    
  110.     eliminarMitad(&lista);
  111.     imprimir(&lista);
  112.    
  113.     return (EXIT_SUCCESS);
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement