Advertisement
juanjo12x

Linked_List_K-esimo-elemento_final

Jun 4th, 2014
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo{
  5.   int valor;
  6.   struct nodo* ptrSig;
  7. }TNodo;
  8.  
  9. int lista_vacia(TNodo *);
  10. void inserta_inicio(TNodo **, int);
  11. int buscar_kesimo(TNodo*,int);
  12.  
  13. void inserta_inicio(TNodo **ptrListaSE, int valor){
  14.     TNodo *ptrNuevo;
  15.     ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
  16.     ptrNuevo->valor = valor;
  17.     ptrNuevo->ptrSig = *ptrListaSE;
  18.     *ptrListaSE = ptrNuevo;
  19. }
  20.  
  21. int lista_vacia(TNodo * ptrListaSE){
  22.     return ptrListaSE==NULL;
  23. }
  24.  
  25. int buscar_kesimo(TNodo * pt1,int k){
  26.     int i=1,kesimo;
  27.     TNodo *p2=pt1;TNodo *p1=pt1;
  28.     if(k<=0) {
  29.         printf("Valor invalido\n");
  30.         return -1;
  31.     }
  32.     /*Movemos k valores el puntero p1*/
  33.     for(i=0;i<k;i++){
  34.         if(p2==NULL){
  35.             printf("Valor invalido\n");
  36.             return -1;
  37.         }
  38.         p2=p2->ptrSig;
  39.     }
  40.     /*Si p2 termina, entonces*/
  41.     if(p2==NULL){
  42.             printf("Valor invalido\n");
  43.             return -1;
  44.     }
  45.     /*Ahora, movemos ambos punteros a la misma velocidad, cuando p2
  46.      * acabe significa que p1 estarΓ  en el lugar correcto */
  47.     while(p2->ptrSig!=NULL){
  48.         p1=p1->ptrSig;
  49.         p2=p2->ptrSig;
  50.     }
  51.     kesimo=p1->valor;
  52.     return kesimo;
  53. }
  54.  
  55. int main(int argc, char** argv) {
  56.     TNodo * ptrListaSE = NULL;
  57.     TNodo * ptrUltimo = NULL;
  58.     int kesimo;
  59.     inserta_inicio(&ptrListaSE, 4);
  60.     inserta_inicio(&ptrListaSE, 6);
  61.     inserta_inicio(&ptrListaSE, 9);
  62.     inserta_inicio(&ptrListaSE, 1);
  63.     inserta_inicio(&ptrListaSE, 2);
  64.     inserta_inicio(&ptrListaSE, 3);
  65.     inserta_inicio(&ptrListaSE, 6);
  66.     kesimo=buscar_kesimo(ptrListaSE,1);
  67.     printf("%d\n",kesimo);
  68.     kesimo=buscar_kesimo(ptrListaSE,2);
  69.     printf("%d\n",kesimo);
  70.     kesimo=buscar_kesimo(ptrListaSE,3);
  71.     printf("%d\n",kesimo);
  72.     kesimo=buscar_kesimo(ptrListaSE,4);
  73.     printf("%d\n",kesimo);
  74.     kesimo=buscar_kesimo(ptrListaSE,8);
  75.     printf("%d\n",kesimo);
  76.    
  77.     return (EXIT_SUCCESS);
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement