Advertisement
Guest User

Linked List Inversion

a guest
Apr 13th, 2011
2,949
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MALLOC(a) (a*)malloc(sizeof(a))
  5.  
  6. typedef struct lista {
  7.    int info;
  8.    struct lista* prox;
  9. } Lista;
  10.  
  11. Lista* lista_cria() {
  12.    return NULL;
  13. }
  14.  
  15. Lista* lista_insere (Lista* l, int i) {
  16.    Lista* novo = MALLOC(Lista);
  17.    novo->info = i;
  18.    novo->prox = l;
  19.         return novo;
  20. }
  21.  
  22. void lista_imprime (Lista* l) {
  23.    Lista* p; /* variavel auxiliar para percorrer a lista */
  24.    for (p = l; p != NULL; p = p->prox)
  25.        printf("info = %d\n", p->info);
  26. }
  27.  
  28. Lista *inversao( Lista *l) {
  29.        
  30.         Lista *nova = lista_cria();
  31.         Lista *p;
  32.        
  33.         for ( p = l; p; p = p->prox )
  34.                 nova = lista_insere(nova, p->info);
  35.         return nova;
  36. }
  37.  
  38. int main( void ) {
  39.    Lista* l;
  40.  
  41.    l = lista_cria();
  42.    l = lista_insere(l, 23);
  43.    l = lista_insere(l, 45);
  44.    l = lista_insere(l, 67);
  45.    l = lista_insere(l, 89);
  46.    l = lista_insere(l, 1011);
  47.    
  48.    printf("\nLista:\n");
  49.    lista_imprime(l);
  50.    printf("\n***Invertendo a lista***\n");
  51.    
  52.    Lista *invertida = inversao(l);
  53.    printf("\nLista depois da inversao:\n");
  54.    
  55.    lista_imprime(invertida);
  56.    
  57.    getch();
  58.    return 0;
  59.    
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement