Advertisement
pmanriquez93

Pregunta 12 - Listas, Pilas y Colas

Jul 2nd, 2014
553
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. /* CABECERA */
  2.  
  3. #ifndef PREG12_H
  4. #define PREG12_H
  5.  
  6. typedef int TElemento;
  7.  
  8. typedef struct nodo{
  9.     TElemento elem;
  10.     struct nodo* ptrSig;
  11. }TNodo;
  12.  
  13. typedef struct lista{
  14.     TNodo *inicio;
  15.     TNodo *fin;
  16.     int cantElem;
  17. }TLista;
  18.  
  19. void crearLista(TLista *);
  20.  
  21. void listaUnitaria(TLista *, TElemento);
  22.  
  23. void anadeIzq (TLista *, TElemento);
  24.  
  25. void imprimirLista(TLista*);
  26.  
  27. int kesimoElemento(TLista*,TElemento);
  28.  
  29. #endif  /* PREG12_H */
  30.  
  31.  
  32.  
  33.  
  34. /* IMPLEMENTACION */
  35.  
  36. #include <stdio.h>
  37. #include <stdlib.h>
  38. #include "preg12.h"
  39.  
  40.  
  41. void crearLista(TLista *lista){
  42.     lista->inicio = NULL;
  43.     lista->fin = NULL;
  44.     lista->cantElem = 0;
  45. }
  46.  
  47. void listaUnitaria(TLista *lista, TElemento elem){
  48.     TNodo *ptrNuevo;
  49.    
  50.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  51.     ptrNuevo->elem = elem;
  52.     ptrNuevo->ptrSig = NULL;
  53.    
  54.     lista->inicio = ptrNuevo;
  55.     lista->fin = ptrNuevo;
  56.     lista->cantElem = 1;
  57. }
  58.  
  59. void anadeIzq(TLista *lista, TElemento elem){
  60.     TNodo *ptrNuevo;
  61.    
  62.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  63.     ptrNuevo->elem = elem;
  64.     ptrNuevo->ptrSig = NULL;
  65.    
  66.     if (lista->inicio == NULL){
  67.         listaUnitaria(lista,elem);
  68.     }else{
  69.         ptrNuevo->ptrSig = lista->inicio;
  70.         lista->inicio = ptrNuevo;
  71.     }
  72.     (lista->cantElem)++;
  73. }
  74.  
  75. void imprimirLista(TLista *lista){
  76.     TNodo *ptrRec;
  77.     ptrRec = lista->inicio;
  78.    
  79.     while(ptrRec){
  80.         printf("%5d",ptrRec->elem);
  81.         ptrRec = ptrRec->ptrSig;
  82.     }
  83.     printf("    NULL\n");
  84. }
  85.  
  86. TElemento kesimoElemento(TLista *lista,TElemento k){
  87.     TNodo *ptrK, *ptrRec;
  88.    
  89.     ptrRec = lista->inicio;
  90.     ptrK = lista->inicio;
  91.    
  92.     int i;
  93.     for(i=0;i<k;i++)
  94.         ptrK = ptrK->ptrSig;
  95.    
  96.     while (ptrK){
  97.         ptrRec = ptrRec->ptrSig;
  98.         ptrK = ptrK->ptrSig;
  99.     }
  100.     return (ptrRec->elem);
  101. }
  102.  
  103.  
  104.  
  105.  
  106. /* MAIN */
  107.  
  108. #include <stdio.h>
  109. #include <stdlib.h>
  110. #include "preg12.h"
  111.  
  112. int main(int argc, char** argv) {  
  113.     TLista lista;
  114.    
  115.     crearLista(&lista);
  116.    
  117.     anadeIzq(&lista,4);
  118.     anadeIzq(&lista,6);
  119.     anadeIzq(&lista,8);
  120.     anadeIzq(&lista,2);
  121.     anadeIzq(&lista,13);
  122.     anadeIzq(&lista,7);
  123.     anadeIzq(&lista,34);
  124.     anadeIzq(&lista,1);
  125.      
  126.     imprimirLista(&lista);
  127.  
  128.     int num,k;
  129.     k = 3;
  130.     num = kesimoElemento(&lista,k);
  131.    
  132.     printf("El kesimo numero es: %d\n",num);
  133.     return (EXIT_SUCCESS);
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement