Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #define MINIMALNA_VELICINA_CLANA (0)
- #define MAKSIMALNA_VELICINA_CLANA (9)
- typedef struct _cvor* Position;
- typedef struct _cvor
- {
- int broj;
- Position next;
- }Cvor;
- void FreeAlocatedData(Position);
- int PopuniListu(Position);
- void IspisListe(Position);
- int NapraviUniju(Position prvaLista, Position drugaLista, Position unija);
- int NapraviPresjek(Position prvaLista, Position drugaLista, Position presjek);
- int GenerirajSlucajniBroj(int min, int max);
- int DodajSortirano(Position, Position);
- Position KreirajCvor(int);
- int DodajIzaTrenutnog(Position lista, Position newItem);
- int main(int argc, char* argv[])
- {
- Cvor prvaLista;
- Cvor drugaLista;
- Cvor unija;
- Cvor presjek;
- srand((unsigned)time(NULL));
- prvaLista.next = NULL;
- drugaLista.next = NULL;
- unija.next = NULL;
- presjek.next = NULL;
- PopuniListu(&prvaLista);
- PopuniListu(&drugaLista);
- IspisListe(prvaLista.next);
- IspisListe(drugaLista.next);
- NapraviUniju(&prvaLista, &drugaLista, &unija);
- IspisListe(unija.next);
- FreeAlocatedData(&prvaLista);
- FreeAlocatedData(&drugaLista);
- FreeAlocatedData(&unija);
- //FreeAlocatedData(&presjek);
- return 0;
- }
- int PopuniListu(Position head)
- {
- int unos = 0;
- int temp = 0;
- int i = 0;
- Position originalHead;
- printf("Koliko zelite clanova u listi? ");
- scanf("%d", &unos);
- originalHead = head;
- head = head->next;
- for (i = 0; i < unos; i++)
- {
- temp = GenerirajSlucajniBroj(MINIMALNA_VELICINA_CLANA, MAKSIMALNA_VELICINA_CLANA);
- DodajSortirano(originalHead, KreirajCvor(temp));
- }
- return 0;
- }
- void IspisListe(Position position)
- {
- while (position != NULL)
- {
- printf("%d ", position->broj);
- position = position->next;
- }
- printf("\n");
- }
- int GenerirajSlucajniBroj(int min, int max)
- {
- return rand() % (max - min + 1) + min;
- }
- Position KreirajCvor(int broj)
- {
- Position noviCvor;
- noviCvor = (Position)malloc(sizeof(Cvor));
- noviCvor->broj = broj;
- noviCvor->next = NULL;
- return noviCvor;
- }
- int DodajIzaTrenutnog(Position lista, Position newItem)
- {
- newItem->next = lista->next;
- lista->next = newItem;
- return -2;
- }
- int DodajSortirano(Position head, Position newItem)
- {
- while (head->next != NULL && head->next->broj > newItem->broj)
- {
- head = head->next;
- }
- DodajIzaTrenutnog(head, newItem);
- return -1;
- }
- int NapraviUniju(Position prvaLista, Position drugaLista, Position unija)
- {
- int pL = DuljinaListe(prvaLista);
- int dL = DuljinaListe(drugaLista);
- int i, j;
- for (i = 0; i < pL; i++)
- for (j = 0; j < dL; j++)
- return 0;
- }
- int DuljinaListe(Position lista)
- {
- int cntr = 0;
- while (lista->next != NULL)
- {
- cntr++;
- lista = lista->next;
- }
- return cntr;
- }
- void FreeAlocatedData(Position p)
- {
- while (p->next != NULL)
- {
- free(p->broj);
- }
- free(p);
- }
- int NapraviPresjek(Position prvaLista, Position drugaLista, Position presjek)
- {
- Position newNode = NULL;
- while (prvaLista != NULL && drugaLista != NULL) {
- if (prvaLista->broj > drugaLista->broj) {
- prvaLista = prvaLista->next;
- }
- else if (drugaLista->broj > prvaLista->broj) {
- drugaLista = drugaLista->next;
- }
- else if (prvaLista->broj == drugaLista->broj) {
- newNode = createNew();
- if (newNode == NULL)
- return 1;
- newNode->broj = prvaLista->broj;
- prvaLista = prvaLista->next;
- drugaLista = drugaLista->next;
- newNode->next = presjek->next;
- presjek->next = newNode;
- presjek = newNode;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement