Advertisement
MusicFreak

Programiranje 28.05.2015 - Bogdan

May 28th, 2015
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.73 KB | None | 0 0
  1. main.c
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "def1.c"        
  6.    
  7.     int main()
  8.      
  9.     {
  10.             int izbor, pravilan_unos;
  11.             TOsoba *glava_liste = NULL;
  12.            
  13.            
  14.             do
  15.             {
  16.                     do{
  17.                     printf("1. Unos na pocetak liste\n");  
  18.                     printf("2. Unos na kraj liste\n");    
  19.                     printf("3. Pregled sadrzaja elemenata cvorova liste\n");      
  20.                     printf("4. Brisanje svih cvorova liste liste\n");      
  21.                     printf("5. Brisanje cvorova liste po kriterijumu liste\n");    
  22.                     printf("6. Izlaz liste\n");
  23.                     printf("Vas izbora: \n");
  24.            
  25.                     if (scanf("%d", &izbor) == 0)
  26.                     {
  27.                             printf("Niste unijeli cjelobrojnu vrijednost\n");
  28.                             pravilan_unos = 0;
  29.                             while (getchar()!='\n');
  30.                     }
  31.                     else
  32.                     {
  33.                             if(izbor >= 1 && izbor <= 6)
  34.                             {
  35.                                     pravilan_unos = 1;
  36.                                     getchar();
  37.                             }
  38.                             else
  39.                             {
  40.                                     printf("Unijeli ste cjelobrojnu vrijednost koja nije u nizu");
  41.                                     pravilan_unos = 0;
  42.                             }
  43.                     }
  44.                     }
  45.                     while(pravilan_unos == 0);
  46.                    
  47.                     if (izbor == 1)
  48.                             glava_liste = unos_na_pocetak(glava_liste);
  49.                     else if (izbor == 2)
  50.                             glava_liste = unos_na_kraj(glava_liste);
  51.                     else if (izbor == 3)
  52.                             pregled(glava_liste);
  53.                     else if (izbor == 4)
  54.                             glava_liste = brisi_sve(glava_liste);
  55.                     else if (izbor == 5)
  56.                             glava_liste = brisi_po_krit(glava_liste);
  57.                     else if (izbor == 6)
  58.                             return 0;
  59.            
  60.             }
  61.             while (1);
  62.            
  63.      
  64.            
  65.             return 0;
  66.     }
  67.  
  68.  
  69. --- def1.c
  70.  
  71. #include <stdio.h>
  72. #include <stdlib.h>
  73.  
  74.  
  75. typedef struct osoba
  76.  
  77. {
  78.         char prezime[20];
  79.         int starost;
  80.         struct osoba *sledeca;
  81. }TOsoba;
  82.  
  83.  
  84. --- unosp.c
  85.  
  86. #include <stdio.h>
  87. #include <stdlib.h>
  88. #include "def1.c"        
  89.  
  90.  
  91.  
  92. TOsoba *unos_na_pocetak(TOsoba *glava)
  93. {
  94.         TOsoba *nova;
  95.         nova = malloc(sizeof(TOsoba));          // rezervise u memoriji mjesto koje nam je potrebno za osobu i vraca pocetnu adresu u promjenljivu nova
  96.        
  97.         printf("Novi cvor pocinje na adresi %d \n", &nova);
  98.        
  99.         printf("Unesite prezime i ime osobe \n");      
  100.         gets(  nova->prezime  );
  101.         printf("Unesite starost osobe \n");
  102.         scanf("%d", &nova -> starost);
  103.         nova -> sledeca = NULL;
  104.        
  105.  
  106.         nova -> sledeca = glava;
  107.         glava = nova;
  108.        
  109.         return glava;  
  110. }
  111.  
  112. ---pregled1.com
  113.  
  114. #include <stdio.h>
  115. #include <stdlib.h>
  116. #include "def1.c"        
  117.  
  118.  
  119.  
  120.  
  121. void pregled(TOsoba *glava)
  122. {
  123.         while (glava)
  124.         {      
  125.         printf("%p %s %d %p\n", glava, glava -> prezime, glava -> starost, glava -> sledeca);
  126.         glava = glava -> sledeca;
  127.         }
  128.  
  129. }
  130.  
  131.  
  132. ---unosk.c
  133.  
  134. #include <stdio.h>
  135. #include <stdlib.h>
  136. #include "def1.c"        
  137.  
  138.  
  139.  
  140. TOsoba *unos_na_kraj(TOsoba *glava)
  141. {
  142.         TOsoba *nova;
  143.         nova = malloc(sizeof(TOsoba));          // rezervise u memoriji mjesto koje nam je potrebno za osobu i vraca pocetnu adresu u promjenljivu nova
  144.        
  145.         printf("Novi cvor pocinje na adresi %p \n", nova);
  146.        
  147.         printf("Unesite prezime i ime osobe \n");      
  148.         gets(  nova->prezime  );
  149.         printf("Unesite starost osobe \n");
  150.         scanf("%d", &nova -> starost);
  151.         nova -> sledeca = NULL;
  152.        
  153.  
  154.         if (glava == NULL)
  155.         {
  156.                 glava = nova;
  157.         }
  158.         else
  159.         {
  160.                 TOsoba *nadji_zadnji = glava;
  161.                 while (nadji_zadnji -> sledeca !=  NULL)
  162.                         nadji_zadnji = nadji_zadnji -> sledeca;
  163.                 nadji_zadnji -> sledeca = nova;
  164.         }
  165.        
  166.        
  167.         return glava;  
  168. }
  169.  
  170. --- brisi1.c
  171. #include <stdio.h>
  172. #include <stdlib.h>
  173. #include "def1.c"        
  174.  
  175.  
  176.  
  177.  
  178. void *brisi_sve(TOsoba *glava)
  179. {
  180.         while (glava)
  181.         {      
  182.         TOsoba *za_brisanje = glava;
  183.         printf("Sad briesm: %p %s %d %p\n", glava, glava -> prezime, glava -> starost, glava -> sledeca);
  184.         glava = glava -> sledeca;
  185.         free(za_brisanje);
  186.         }
  187.         return glava; //return NULL;
  188. }
  189.  
  190. --- brisikrit.c
  191.  
  192. #include <stdio.h>
  193. #include <stdlib.h>
  194. #include "def1.c"        
  195.  
  196.  
  197.  
  198.  
  199. void *brisi_po_krit(TOsoba *glava)
  200. {
  201.         int godina;
  202.         TOsoba *tekuca = glava, *za_brisanje = NULL, *pret = NULL;
  203.        
  204.         printf("Koliko godina imaju osobe koje treba izbrisati iz liste: \n");
  205.         scanf("%d", &godina);
  206.         while(tekuca)
  207.         {
  208.             if(tekuca -> starost == godina)
  209.             {
  210.                 za_brisanje = tekuca;
  211.                 tekuca = tekuca -> sledeca;
  212.                 if (pret == NULL)
  213.                     glava = tekuca;
  214.                 else
  215.                     pret -> sledeca = tekuca;
  216.                 free(za_brisanje);
  217.                 return glava;
  218.            
  219.             }
  220.             else
  221.             {
  222.                 pret = tekuca;
  223.                 tekuca = tekuca -> sledeca;
  224.             }
  225.         }
  226.        
  227.         return glava;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement