Advertisement
lukicdarkoo

Dvostruko spregnuta lista

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