Advertisement
Mixilino

21maj

May 21st, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.94 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. typedef struct node * PNODE;
  5.  
  6. typedef struct node {
  7.     int data;
  8.     PNODE next;
  9. }NODE;
  10.  
  11. void prikaziListu(PNODE glava);
  12.  
  13. void dodajNaPocetak(PNODE * glava, PNODE * rep, int elem);
  14. void dodajNaKraj(PNODE * glava, PNODE * rep, int elem);
  15.  
  16. void izbaciSaPocetka(PNODE * glava, PNODE * rep);
  17. void izbaciSaKraja(PNODE *glava, PNODE *rep);
  18.  
  19. void izbaciZadatiElement(PNODE * glava, PNODE * rep, int elem);
  20.  
  21.  
  22.  
  23. int main(void) {
  24.     PNODE glava = NULL;
  25.     PNODE rep = NULL;
  26.     izbaciZadatiElement(&glava, &rep, 123);
  27.     prikaziListu(glava);
  28.  
  29.     dodajNaPocetak(&glava, &rep, 12);
  30.     dodajNaPocetak(&glava, &rep, 11);
  31.     dodajNaPocetak(&glava, &rep, 10);
  32.     dodajNaPocetak(&glava, &rep, 15);
  33.     dodajNaPocetak(&glava, &rep, 14);
  34.     dodajNaPocetak(&glava, &rep, 13);
  35.     prikaziListu(glava);
  36.  
  37.     izbaciZadatiElement(&glava, &rep, 11);
  38.     prikaziListu(glava);
  39.  
  40. }
  41.  
  42. void dodajNaPocetak(PNODE * glava, PNODE * rep, int elem)
  43. {
  44.     PNODE novi = malloc(sizeof(NODE));
  45.     novi->data = elem;
  46.     novi->next = *glava;
  47.     if (*glava == NULL) {
  48.         *rep = novi;
  49.     }
  50.     *glava = novi;
  51. }
  52.  
  53. void prikaziListu(PNODE glava)
  54. {
  55.     PNODE curr = glava;
  56.     printf("Lista:\n");
  57.     if (curr == NULL) {
  58.         printf("PRazna je!\n");
  59.         return;
  60.     }
  61.     while (curr != NULL) {
  62.         printf("%d\t", curr->data);
  63.         curr = curr->next;
  64.     }
  65.     printf("\n\n");
  66. }
  67.  
  68. void dodajNaKraj(PNODE * glava, PNODE * prep, int elem)
  69. {
  70.     PNODE novi = malloc(sizeof(NODE));
  71.     novi->data = elem;
  72.     novi->next = NULL;
  73.     if (*glava == NULL) {
  74.         *glava = novi;
  75.         *prep = novi;
  76.     }
  77.     else {
  78.         (*prep)->next = novi;
  79.         *prep = novi;
  80.     }
  81. }
  82.  
  83. void izbaciSaPocetka(PNODE * glava, PNODE * rep)
  84. {
  85.     PNODE del = *glava;
  86.     if (*glava == NULL) {
  87.         printf("Lista je prazna svakako\n");
  88.         return;
  89.     }
  90.     if (*glava == *rep) {
  91.         *glava = NULL;
  92.         *rep = NULL;
  93.         free(del);
  94.         return;
  95.     }
  96.     *glava = del->next;
  97.     free(del);
  98. }
  99.  
  100. void izbaciSaKraja(PNODE * glava, PNODE * rep)
  101. {
  102.     PNODE last = *rep;
  103.     PNODE pret = *glava;
  104.     if (*glava == NULL) {
  105.         printf("Lista je prazna u startu!");
  106.         return;
  107.     }
  108.     if (*glava == *rep) {
  109.         *glava = NULL;
  110.         *rep = NULL;
  111.         free(last);
  112.         return;
  113.     }
  114.     while (pret->next != last) {
  115.         pret = pret->next;
  116.     }
  117.     *rep = pret;
  118.     pret->next = NULL;
  119.     free(last);
  120.  
  121. }
  122.  
  123. void izbaciZadatiElement(PNODE * glava, PNODE * rep, int elem)
  124. {
  125.     PNODE prev = NULL;
  126.     PNODE curr = *glava;
  127.     if (*glava == NULL) {
  128.         printf("Lista je praznapa ne mogu izbaciti broj %d\n", elem);
  129.         return;
  130.     }
  131.     if (*glava == *rep) {
  132.         if ((*glava)->data == elem) {
  133.             *rep = NULL;
  134.             *glava = NULL;
  135.             free(prev);
  136.         }
  137.         return;
  138.     }
  139.     while (curr->next != NULL && curr->data != elem) {
  140.         prev = curr;
  141.         curr = curr->next;
  142.     }
  143.     if (curr->data != elem) {
  144.         printf("Broj ne postoji u listi!\n");
  145.         return;
  146.     }
  147.     if (prev == NULL) {
  148.         izbaciSaPocetka(glava, rep);
  149.     }
  150.     else if (curr == *rep) {
  151.         izbaciSaKraja(glava, rep);
  152.     }
  153.     else {
  154.         prev->next = curr->next;
  155.         free(curr);
  156.     }
  157.  
  158.  
  159.  
  160.  
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement