Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.68 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. typedef struct cvor* PCVORLISTA;
  7. typedef struct cvor {
  8.     int podatak;
  9.     PCVORLISTA sledeci;
  10. }CVORLISTA;
  11. void ubaciNaKrajListe(PCVORLISTA* glava, int podatak) {
  12.     PCVORLISTA novi = malloc(sizeof(CVORLISTA));
  13.     novi->podatak = podatak;
  14.     novi->sledeci = NULL;
  15.     if (*glava == NULL) {
  16.         *glava = novi;
  17.     }
  18.     else {
  19.         PCVORLISTA tek = *glava;
  20.         while (tek->sledeci != NULL)
  21.         {
  22.             tek = tek->sledeci;
  23.         }
  24.         tek->sledeci = novi;
  25.     }
  26.  
  27.  
  28.  
  29. }
  30. PCVORLISTA izNizaUListu(int A[], int brelA) {
  31.     PCVORLISTA nova = NULL;
  32.     for (int i = 0; i < brelA; i++) {
  33.         ubaciNaKrajListe(&nova, A[i]);
  34.     }
  35.  
  36.     return nova;
  37. }
  38. void printListu(PCVORLISTA glava) {
  39.  
  40.     if (glava == NULL) {
  41.         printf("Lista je prazna!\n");
  42.         return;
  43.     }
  44.     printf("Lista je :\n");
  45.     while (glava != NULL) {
  46.         printf("%d ", glava->podatak);
  47.         glava = glava->sledeci;
  48.     }
  49.  
  50.  
  51. }
  52.  
  53. void zadatak1() {
  54.     int F[] = { 1,2,1,1,3,2,3,3,3,4,1 };
  55.     int nF = sizeof(F) / sizeof(int);
  56.     int L[] = { 1,3,4,2,5 };
  57.     int nL = sizeof(L) / sizeof(int);
  58.     PCVORLISTA glavaF;
  59.  
  60.     int izbor;
  61.     int provera = 1;
  62.     do {
  63.         printf("*********Meni za prvi zadatak***********");
  64.         printf("1)Prebaci elemente niza F u listu F\n");
  65.         printf("2)Prikazati listu F\n");
  66.         printf("3)Formiraj listu frekvencija koja sadrzi sve elemente liste F i frekvenciju pojavljivanja svakog elementa u listi F\n");
  67.         printf("4)Prikazi listu FREKVENCIJA\n");
  68.         printf("5)Prebaci elemente niza L u listu L");
  69.         printf("6)Prikazi listu L\n");
  70.         printf("7)Forimraj listu razlika koja sadrzi elemente liste F koji nema u listi L\n");
  71.         printf("8)Prikazi listu RAZLIKA\n");
  72.         printf("0)Povratak u glavni meni!\n");
  73.         printf("VAS IZBOR JE!\n");
  74.         scanf("%d", &izbor);
  75.         getchar();
  76.         switch (izbor)
  77.         {
  78.         case 1:
  79.             glavaF = izNizaUListu(F, nF);
  80.  
  81.  
  82.             break;
  83.         case 2:
  84.             printListu(glavaF);
  85.  
  86.             break;
  87.         case 3:
  88.             break;
  89.         case 4:
  90.  
  91.             break;
  92.         case 5:
  93.             break;
  94.         case 6:
  95.             break;
  96.         case 7:
  97.             break;
  98.         case 8:
  99.             break;
  100.         case 0:
  101.             provera = 0;
  102.             break;
  103.  
  104.         default:
  105.             //ptintf("Pogesan unos!\n");
  106.             printf("Pogesan unos!\n");
  107.             break;
  108.         }
  109.  
  110.     } while (provera != 0);
  111.  
  112.  
  113.  
  114. }
  115.  
  116. int vratiIndeksZaRastuciNiz(int niz[], int n, int element) {
  117.     int indeks = n;
  118.     for (int i = 0; i < n; i++)
  119.     {
  120.         if (niz[i] > element) {
  121.             indeks = i;
  122.             break;
  123.         }
  124.     }
  125.     return indeks;
  126. }
  127.  
  128. void pomeriElementeNizaUDesnoOdIndeksa(int niz[], int n, int indeks) {
  129.     for (int i = n; i > indeks; i--)
  130.     {
  131.         niz[i] = niz[i - 1];
  132.     }
  133. }
  134.  
  135. void ubaciElementURastuceSortiranNiz(int niz[], int* n, int element) {
  136.     int indeks = vratiIndeksZaRastuciNiz(niz, *n, element);
  137.     pomeriElementeNizaUDesnoOdIndeksa(niz, *n, indeks);
  138.     niz[indeks] = element;
  139.     (*n)++;
  140. }
  141.  
  142. void formirajNiz(int niz[], int* n, PCVORLISTA glava1, PCVORLISTA glava2) {
  143.  
  144.     while (glava1 != NULL) {
  145.         ubaciElementURastuceSortiranNiz(niz, n, glava1->podatak);
  146.         glava1 = glava1->sledeci;
  147.     }
  148.  
  149.     while (glava2 != NULL) {
  150.         ubaciElementURastuceSortiranNiz(niz, n, glava2->podatak);
  151.         glava2 = glava2->sledeci;
  152.     }
  153.  
  154. }
  155.  
  156. void prikaziNiz(int niz[], int n) {
  157.     for (int i = 0; i < n; i++)
  158.     {
  159.         printf("%d ", niz[i]);
  160.     }
  161.     printf("\n");
  162. }
  163.  
  164. int main(void) {
  165.  
  166.     // lista: 3 -> 2 -> 1
  167.     PCVORLISTA glava1 = NULL;
  168.     ubaciNaKrajListe(&glava1, 3);
  169.     ubaciNaKrajListe(&glava1, 2);
  170.     ubaciNaKrajListe(&glava1, 1);
  171.  
  172.     // lista: 6 -> 5 -> 4
  173.     PCVORLISTA glava2 = NULL;
  174.     ubaciNaKrajListe(&glava2, 6);
  175.     ubaciNaKrajListe(&glava2, 5);
  176.     ubaciNaKrajListe(&glava2, 4);
  177.  
  178.     // niz ce biti: 1, 2, 3, 4, 5, 6
  179.     int niz[100];
  180.     int n = 0;
  181.     formirajNiz(niz, &n, glava1, glava2);
  182.     prikaziNiz(niz, n);
  183.  
  184.     //zadatak1();
  185.  
  186.     system("Pause");
  187.     return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement