Advertisement
lukicdarkoo

Jednostruko spregnuta lista

Dec 27th, 2013
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Cvor Tcvor;
  5.  
  6. struct Cvor {
  7.     Tcvor *sljedeci;
  8.     char znak;
  9. };
  10.  
  11. void initijalizacija(Tcvor **glava) {
  12.     *glava = NULL;
  13. }
  14.  
  15. //dodaje element na kraj liste
  16. void dodajElement(Tcvor **glava, char znak) {
  17.     Tcvor *novi;
  18.  
  19.     novi = (Tcvor *)malloc(sizeof(Tcvor));
  20.     novi->znak = znak;
  21.     novi->sljedeci = NULL;
  22.  
  23.     if (*glava == NULL) {
  24.         *glava = novi;
  25.         return;
  26.     }
  27.  
  28.     Tcvor *tekuci;
  29.     tekuci = *glava;
  30.     while (tekuci->sljedeci != NULL)
  31.         tekuci = tekuci->sljedeci;
  32.  
  33.     tekuci->sljedeci = novi;
  34. }
  35.  
  36. void listanjeListe(Tcvor **glava) {
  37.     Tcvor *tekuci;
  38.     tekuci = *glava;
  39.  
  40.     while (tekuci != NULL) {
  41.         printf("%c", tekuci->znak);
  42.         tekuci = tekuci->sljedeci;
  43.     }
  44. }
  45.  
  46. void brisanjeElementa(Tcvor **glava, char znak) {
  47.     Tcvor *tekuci;
  48.     Tcvor *prethodni;
  49.  
  50.     prethodni = tekuci = *glava;
  51.  
  52.     while (tekuci != NULL) {
  53.         if (tekuci->znak == znak) {
  54.             if (prethodni != tekuci)
  55.                 prethodni->sljedeci = tekuci->sljedeci;
  56.             else *glava = tekuci->sljedeci;
  57.  
  58.             free(tekuci);
  59.             tekuci = prethodni->sljedeci;
  60.             return;
  61.         }
  62.  
  63.         prethodni = tekuci;
  64.         tekuci = tekuci->sljedeci;
  65.     }
  66. }
  67.  
  68. void brisanjeListe(Tcvor **glava) {
  69.     Tcvor *tekuci;
  70.  
  71.     while (*glava != NULL) {
  72.         tekuci = *glava;
  73.         *glava = (*glava)->sljedeci;
  74.         free(tekuci);
  75.     }
  76. }
  77.  
  78. int main()
  79. {
  80.     char znakovi[] = "Darko";
  81.  
  82.     Tcvor *glava;
  83.     initijalizacija(&glava);
  84.  
  85.     int i;
  86.     for (i = 0; i < sizeof(znakovi)/sizeof(znakovi[0]); i++)
  87.         dodajElement(&glava, znakovi[i]);
  88.  
  89.     listanjeListe(&glava);
  90.  
  91.     brisanjeElementa(&glava, 'r');
  92.  
  93.     listanjeListe(&glava);
  94.  
  95.     brisanjeListe(&glava);
  96.  
  97.     listanjeListe(&glava);
  98.  
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement