Advertisement
pmanriquez93

Problema 1 - Lista, Pilas y Colas

May 25th, 2014
600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "preg1.h"
  4.  
  5.  
  6. void crearLista(TLista *lista);
  7.  
  8. void insertaOrden(TLista *lista, TElemento elem);
  9.  
  10. void imprimeLista(TLista *lista);
  11.  
  12. void imprimePosiciones(TLista *, TLista *);
  13.  
  14. void crearLista(TLista *lista){
  15.     lista->inicio = NULL;
  16.     lista->fin = NULL;
  17.     lista->cantElem = 0;
  18. }
  19.  
  20.  
  21.  
  22. /*int tamanhoLista(TLista *lista){
  23.     return (lista->cantElem);
  24. }*/
  25.  
  26.  
  27. void imprimirLista(TLista *lista){
  28.     TNodo *ptrRec;
  29.    
  30.     ptrRec = lista->inicio;
  31.     while (ptrRec != NULL){
  32.         printf("%d ",ptrRec->elem);
  33.         ptrRec = ptrRec->ptrSig;
  34.     }
  35.     printf("NULL\n");
  36. }
  37.  
  38. void insertaOrden(TLista *lista, TElemento elem){
  39.     TNodo *ptrNuevo;
  40.     ptrNuevo =(TNodo *)malloc(sizeof(TNodo));
  41.    
  42.     ptrNuevo->elem = elem;
  43.     ptrNuevo->ptrSig = NULL;
  44.    
  45.     TNodo *ptrAnt;
  46.     TNodo *ptrRec;
  47.    
  48.     ptrRec = lista->inicio;
  49.     ptrAnt = NULL;
  50.    
  51.     while (ptrRec != NULL && ptrRec->elem < elem ){
  52.         ptrAnt = ptrRec;
  53.         ptrRec = ptrRec->ptrSig;        
  54.     }
  55.    
  56.     if (ptrAnt == NULL){                //Nunca entro al while
  57.         if (ptrRec == NULL){            //No hay elementos
  58.             lista->inicio = ptrNuevo;
  59.             lista->fin = ptrNuevo;
  60.         }
  61.         else{                           //Inserto al comienzo
  62.             ptrNuevo->ptrSig = lista->inicio;
  63.             lista->inicio = ptrNuevo;
  64.         }
  65.     }
  66.     else{                               //Si entro al while
  67.         if (ptrRec == NULL){            //Inserto al final
  68.             ptrAnt->ptrSig = ptrNuevo;
  69.             lista->fin = ptrNuevo;
  70.         }
  71.         else{                           //Inserto en el medio
  72.             ptrNuevo->ptrSig = ptrRec;
  73.             ptrAnt->ptrSig = ptrNuevo;
  74.         }
  75.     }
  76.     (lista->cantElem)++;
  77. }
  78.  
  79. void imprimePosiciones(TLista *lista, TLista *pos){
  80.     int cont = 1;
  81.    
  82.     TNodo *ptrRecLista;
  83.     TNodo *ptrRecPos;
  84.    
  85.     ptrRecLista = lista->inicio;
  86.     ptrRecPos = pos->inicio;
  87.    
  88.     while (ptrRecPos != NULL){
  89.         if (ptrRecPos->elem == cont){
  90.             printf("%d ",ptrRecLista->elem);
  91.             ptrRecPos = ptrRecPos->ptrSig;
  92.         }
  93.         ptrRecLista = ptrRecLista->ptrSig;
  94.         cont++;
  95.        
  96.     }
  97. }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106. /*
  107.  * File:   main.c
  108.  * Author: alulab11
  109.  *
  110.  * Created on 23 de mayo de 2014, 03:20 PM
  111.  */
  112.  
  113. #include <stdio.h>
  114. #include <stdlib.h>
  115. #include "preg1.h"
  116.  
  117. typedef int TElemento;
  118.  
  119. typedef struct nodo {
  120.     TElemento elem;
  121.     struct nodo* ptrSig;
  122. }TNodo;
  123.  
  124. typedef struct lista{
  125.     TNodo *inicio;
  126.     TNodo *fin;
  127.     int cantElem;
  128. }TLista;
  129.  
  130.  
  131. /*
  132.  *
  133.  */
  134. int main(int argc, char** argv) {
  135.  
  136.  
  137.  
  138.    
  139.     TLista lista1;
  140.     TLista lista2;
  141.     TLista listaOrd;
  142.    
  143.     crearLista(&lista1);
  144.    
  145.     insertaOrden(&lista1,1);
  146.     insertaOrden(&lista1,2);
  147.     insertaOrden(&lista1,6);
  148.     insertaOrden(&lista1,10);
  149.     insertaOrden(&lista1,9);
  150.     insertaOrden(&lista1,7);
  151.     insertaOrden(&lista1,22);
  152.     insertaOrden(&lista1,12);
  153.     insertaOrden(&lista1,8);
  154.     insertaOrden(&lista1,14);
  155.     insertaOrden(&lista1,15);
  156.    
  157.     imprimirLista(&lista1);
  158.     //printf("%d",tamanholista(&lista));
  159.    
  160.     crearLista(&lista2);
  161.    
  162.     insertaOrden(&lista2,2);
  163.     insertaOrden(&lista2,1);
  164.     insertaOrden(&lista2,5);
  165.     insertaOrden(&lista2,8);
  166.    
  167.     imprimirLista(&lista2);
  168.    
  169.    
  170.    
  171.     imprimePosiciones(&lista1, &lista2);
  172.    
  173.  
  174.     return (EXIT_SUCCESS);
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement