Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct cvor* PCVORLISTA;
- typedef struct cvor {
- int podatak;
- PCVORLISTA sledeci;
- }CVORLISTA;
- void ubaciNaKrajListe(PCVORLISTA* glava, int podatak) {
- PCVORLISTA novi = malloc(sizeof(CVORLISTA));
- novi->podatak = podatak;
- novi->sledeci = NULL;
- if (*glava == NULL) {
- *glava = novi;
- }
- else {
- PCVORLISTA tek = *glava;
- while (tek->sledeci != NULL)
- {
- tek = tek->sledeci;
- }
- tek->sledeci = novi;
- }
- }
- PCVORLISTA izNizaUListu(int A[], int brelA) {
- PCVORLISTA nova = NULL;
- for (int i = 0; i < brelA; i++) {
- ubaciNaKrajListe(&nova, A[i]);
- }
- return nova;
- }
- void printListu(PCVORLISTA glava) {
- if (glava == NULL) {
- printf("Lista je prazna!\n");
- return;
- }
- printf("Lista je :\n");
- while (glava != NULL) {
- printf("%d ", glava->podatak);
- glava = glava->sledeci;
- }
- }
- void zadatak1() {
- int F[] = { 1,2,1,1,3,2,3,3,3,4,1 };
- int nF = sizeof(F) / sizeof(int);
- int L[] = { 1,3,4,2,5 };
- int nL = sizeof(L) / sizeof(int);
- PCVORLISTA glavaF;
- int izbor;
- int provera = 1;
- do {
- printf("*********Meni za prvi zadatak***********");
- printf("1)Prebaci elemente niza F u listu F\n");
- printf("2)Prikazati listu F\n");
- printf("3)Formiraj listu frekvencija koja sadrzi sve elemente liste F i frekvenciju pojavljivanja svakog elementa u listi F\n");
- printf("4)Prikazi listu FREKVENCIJA\n");
- printf("5)Prebaci elemente niza L u listu L");
- printf("6)Prikazi listu L\n");
- printf("7)Forimraj listu razlika koja sadrzi elemente liste F koji nema u listi L\n");
- printf("8)Prikazi listu RAZLIKA\n");
- printf("0)Povratak u glavni meni!\n");
- printf("VAS IZBOR JE!\n");
- scanf("%d", &izbor);
- getchar();
- switch (izbor)
- {
- case 1:
- glavaF = izNizaUListu(F, nF);
- break;
- case 2:
- printListu(glavaF);
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- break;
- case 7:
- break;
- case 8:
- break;
- case 0:
- provera = 0;
- break;
- default:
- //ptintf("Pogesan unos!\n");
- printf("Pogesan unos!\n");
- break;
- }
- } while (provera != 0);
- }
- int vratiIndeksZaRastuciNiz(int niz[], int n, int element) {
- int indeks = n;
- for (int i = 0; i < n; i++)
- {
- if (niz[i] > element) {
- indeks = i;
- break;
- }
- }
- return indeks;
- }
- void pomeriElementeNizaUDesnoOdIndeksa(int niz[], int n, int indeks) {
- for (int i = n; i > indeks; i--)
- {
- niz[i] = niz[i - 1];
- }
- }
- void ubaciElementURastuceSortiranNiz(int niz[], int* n, int element) {
- int indeks = vratiIndeksZaRastuciNiz(niz, *n, element);
- pomeriElementeNizaUDesnoOdIndeksa(niz, *n, indeks);
- niz[indeks] = element;
- (*n)++;
- }
- void formirajNiz(int niz[], int* n, PCVORLISTA glava1, PCVORLISTA glava2) {
- while (glava1 != NULL) {
- ubaciElementURastuceSortiranNiz(niz, n, glava1->podatak);
- glava1 = glava1->sledeci;
- }
- while (glava2 != NULL) {
- ubaciElementURastuceSortiranNiz(niz, n, glava2->podatak);
- glava2 = glava2->sledeci;
- }
- }
- void prikaziNiz(int niz[], int n) {
- for (int i = 0; i < n; i++)
- {
- printf("%d ", niz[i]);
- }
- printf("\n");
- }
- int main(void) {
- // lista: 3 -> 2 -> 1
- PCVORLISTA glava1 = NULL;
- ubaciNaKrajListe(&glava1, 3);
- ubaciNaKrajListe(&glava1, 2);
- ubaciNaKrajListe(&glava1, 1);
- // lista: 6 -> 5 -> 4
- PCVORLISTA glava2 = NULL;
- ubaciNaKrajListe(&glava2, 6);
- ubaciNaKrajListe(&glava2, 5);
- ubaciNaKrajListe(&glava2, 4);
- // niz ce biti: 1, 2, 3, 4, 5, 6
- int niz[100];
- int n = 0;
- formirajNiz(niz, &n, glava1, glava2);
- prikaziNiz(niz, n);
- //zadatak1();
- system("Pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement