File: Stare vježbe/vjezbe11/71a__vezane_liste.c

  1. /*
  2.   71a__vezane_liste.c
  3.   Uvodimo pojam vezane liste.
  4.   -----
  5.   Program ucitava cijele brojeve i stavlja ih u vezanu listu tako da svaki
  6.   ucitani broj stavi na pocetak.
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <malloc.h>
  12.  
  13. typedef struct __node {
  14. int broj;
  15. struct __node *next;
  16. } node;
  17.  
  18. int main ( void )
  19. {
  20. node *glava, *pomocni;
  21.  
  22. /* inicijalizacija liste */
  23. glava=NULL;
  24.  
  25. /* ucitavamo brojeve sve dok se ne ucita 0 */
  26. while (1)
  27. {
  28. int temp;
  29.  
  30. printf ("Unesi broj (0 za kraj): ");
  31. scanf ("%d", &temp);
  32.  
  33. if (temp==0) break;
  34.  
  35. pomocni=(node *) malloc(sizeof(node));
  36. pomocni->broj=temp;
  37.  
  38. /* dodajemo novi cvor na pocetak liste glava */
  39. if (glava==NULL)
  40. {
  41. /* ako je lista prazna, ovo joj postaje jedini cvor; iduceg
  42.   elementa nema */
  43. glava=pomocni; glava->next=NULL;
  44. }
  45. else
  46. {
  47. /* ako vec nesto ima u listi, to treba ici iza cvora pomocni;
  48.   nova glava liste postaje cvor pomocni */
  49. pomocni->next=glava; glava=pomocni;
  50. }
  51. }
  52.  
  53. /* ispisujemo listu cvor po cvor */
  54. printf ("Ispis liste: ");
  55. for (pomocni=glava; pomocni!=NULL; pomocni=pomocni->next)
  56. printf ("%d ", pomocni->broj);
  57.  
  58. /* oslobadjanje memorije */
  59. while (glava!=NULL)
  60. {
  61. pomocni=glava; glava=glava->next;
  62. free (pomocni);
  63. }
  64.  
  65. return 0;
  66. }
  67.