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

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