Advertisement
Domy131097

[LV2] Algoritmi - Povezani popis

Mar 21st, 2018
170
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.74 KB | None
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define _CRT_SECURE_NO_WARNINGS
  6. #define randnum(min, max) \
  7.         ((rand() % (int)(((max) + 1) - (min))) + (min))
  8.  
  9.  
  10. typedef struct PovezanaLista {
  11.     int x;
  12.     struct PovezanaLista *sljedeci;
  13. }PL;
  14.  
  15. void unosNiza(int *V, int  n) {
  16.     for (int i = 0; i < n; i++) {
  17.         V[i] = randnum(0, 500);
  18.         //printf("%d ", V[i]);
  19.     }
  20. }
  21.  
  22. PL *stvoriListu(int *V, int n) {
  23.     PL *glava, *P;
  24.     for (int i = 0; i < n; i++) {
  25.         if (i == 0) {
  26.             glava = (PL *)malloc(sizeof(PL));
  27.             P = glava;
  28.         }
  29.         else {
  30.             P->sljedeci = (PL *)malloc(sizeof(PL));
  31.             P = P->sljedeci;
  32.         }
  33.         P->x = V[i];
  34.     }
  35.     P->sljedeci = NULL;
  36.     return glava;
  37. }
  38.  
  39. int SekvencijalnoPretrazivanjeNiz(int *V, int n, int x) {
  40.     for (int i = 0; i < n; i++) {
  41.         if (V[i] == x) return i;
  42.     }
  43.     return -1;
  44. }
  45.  
  46. int SekvencijalnoPretrazivanjeLista(PL *glava, int n, int x) {
  47.     PL *prvi = glava;
  48.     while (prvi != NULL) {
  49.         if (prvi->x == x) return 1;
  50.         prvi = prvi->sljedeci;
  51.     }
  52.     return -1;
  53. }
  54.  
  55. int main() {
  56.     int *V = NULL, n;
  57.     PL *lista = NULL;
  58.     time_t t1, t2;
  59.     printf("Unesite broj elemenata niza:\n");
  60.     scanf("%d", &n);
  61.     V = (int *)malloc(n * sizeof(int));
  62.     t1 = clock();
  63.     unosNiza(V, n);
  64.     t2 = clock();
  65.     printf("Vrijeme unosa u niz iznosi %dms. \n", t2 - t1);
  66.     t1 = clock();
  67.     lista = stvoriListu(V, n);
  68.     t2 = clock();
  69.     printf("Vrijeme unosa u listu iznosi %dms. \n", t2 - t1);
  70.     t1 = clock();
  71.     if (SekvencijalnoPretrazivanjeNiz(V, n, 800) == -1) printf("Nema trazenog elementa u nizu.\n");
  72.     t2 = clock();
  73.     printf("Vrijeme sekvencijalnog pretrazivanja niza iznosi %dms. \n", t2 - t1);
  74.     t1 = clock();
  75.     if(SekvencijalnoPretrazivanjeLista(lista, n, 800) == -1) printf("Nema trazenog elementa u listi.\n");
  76.     t2 = clock();
  77.     printf("Vrijeme sekvencijalnog pretrazivanja liste iznosi %dms. \n", t2 - t1);
  78.     printf("Velicina strukture iznosi %d", sizeof(PL));
  79. }
  80.  
  81. #include <stdio.h>
  82. #include <stdlib.h>
  83. #include <time.h>
  84.  
  85. #define _CRT_SECURE_NO_WARNINGS
  86. #define randnum(min, max) \
  87.         ((rand() % (int)(((max) + 1) - (min))) + (min))
  88.  
  89.  
  90. typedef struct PovezanaLista {
  91.     int x;
  92.     struct PovezanaLista *sljedeci;
  93. }PL;
  94.  
  95. void unosNiza(int *V, int  n) {
  96.     for (int i = 0; i < n; i++) {
  97.         V[i] = randnum(0, 500);
  98.         //printf("%d ", V[i]);
  99.     }
  100. }
  101.  
  102. PL *stvoriListu(int *V, int n) {
  103.     PL *glava, *P;
  104.     for (int i = 0; i < n; i++) {
  105.         if (i == 0) {
  106.             glava = (PL *)malloc(sizeof(PL));
  107.             P = glava;
  108.         }
  109.         else {
  110.             P->sljedeci = (PL *)malloc(sizeof(PL));
  111.             P = P->sljedeci;
  112.         }
  113.         P->x = V[i];
  114.     }
  115.     P->sljedeci = NULL;
  116.     return glava;
  117. }
  118.  
  119. int SekvencijalnoPretrazivanjeNiz(int *V, int n, int x) {
  120.     for (int i = 0; i < n; i++) {
  121.         if (V[i] == x) return i;
  122.     }
  123.     return -1;
  124. }
  125.  
  126. int SekvencijalnoPretrazivanjeLista(PL *glava, int n, int x) {
  127.     PL *prvi = glava;
  128.     while (prvi != NULL) {
  129.         if (prvi->x == x) return 1;
  130.         prvi = prvi->sljedeci;
  131.     }
  132.     return -1;
  133. }
  134.  
  135. int main() {
  136.     int *V = NULL, n;
  137.     PL *lista = NULL;
  138.     time_t t1, t2;
  139.     printf("Unesite broj elemenata niza:\n");
  140.     scanf("%d", &n);
  141.     V = (int *)malloc(n * sizeof(int));
  142.     t1 = clock();
  143.     unosNiza(V, n);
  144.     t2 = clock();
  145.     printf("Vrijeme unosa u niz iznosi %dms. \n", t2 - t1);
  146.     t1 = clock();
  147.     lista = stvoriListu(V, n);
  148.     t2 = clock();
  149.     printf("Vrijeme unosa u listu iznosi %dms. \n", t2 - t1);
  150.     t1 = clock();
  151.     if (SekvencijalnoPretrazivanjeNiz(V, n, 800) == -1) printf("Nema trazenog elementa u nizu.\n");
  152.     t2 = clock();
  153.     printf("Vrijeme sekvencijalnog pretrazivanja niza iznosi %dms. \n", t2 - t1);
  154.     t1 = clock();
  155.     if(SekvencijalnoPretrazivanjeLista(lista, n, 800) == -1) printf("Nema trazenog elementa u listi.\n");
  156.     t2 = clock();
  157.     printf("Vrijeme sekvencijalnog pretrazivanja liste iznosi %dms. \n", t2 - t1);
  158.     printf("Velicina strukture iznosi %d", sizeof(PL));
  159. }
Advertisement
RAW Paste Data Copied
Advertisement