Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- /*FUNKCIJE ZA LISTE
- 1.KREIRAJ !!!
- 2.UBACI(GDE)-(POCETAK,KRAJ,MESTO) !!!
- 3.IZBACI(GDE)-(POCETAK,KRAJ,MESTO) !!!
- 4.PRIKAZI !!!
- 5.PROMENI(GDE)-(POCETAK,KRAJ,MESTO,VREDNOST) !!!
- 6.MIN i gde se nalazi ?
- 7.MAX i gde se nalazi ?
- 8. Ako ima vise vrati ih sve i reci gde su ?
- 9.Zajednicki elementi dve liste ? i Prikaz njih ?
- 10.Imamo dve liste i od njih napravimo jedinstvenu
- 11.SORTIRAJ !!!
- 12.Unija dve liste !!!
- 13.Ubaci u sortiranu !!!
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- typedef struct element * POKAZIVAC;
- typedef struct element{
- int podatak;
- POKAZIVAC sledeci;
- }ELEMENT;
- typedef struct glavaRep * LISTA;
- struct glavaRep{
- POKAZIVAC glava;
- POKAZIVAC rep;
- };
- void kreirajListu(LISTA *lista){
- (*lista) = malloc(sizeof(LISTA));
- (*lista)->glava = NULL;
- (*lista)->rep = NULL;
- }
- void ubaciBrojNaPocetakListe(LISTA lista, int noviPodatak){
- POKAZIVAC noviElement = malloc(sizeof(ELEMENT));
- noviElement->podatak = noviPodatak;
- noviElement->sledeci = lista->glava;
- lista->glava = noviElement;
- if (lista->rep == NULL)
- {
- lista->rep = noviElement;
- }
- }
- void ubaciBrojNaKrajListe(LISTA lista, int noviPodatak){
- POKAZIVAC noviElement = malloc(sizeof(ELEMENT));
- noviElement->podatak = noviPodatak;
- noviElement->sledeci = NULL;
- if (lista->glava == NULL){
- lista->glava = noviElement;
- lista->rep = noviElement;
- }
- else {
- lista->rep->sledeci = noviElement;
- lista->rep = noviElement;
- }
- }
- void ubaciNaOdredjenoMestoUListi(LISTA lista, int noviPodatak, int pozicija){
- POKAZIVAC noviElement = malloc(sizeof(ELEMENT));
- int redniBroj = 1;
- POKAZIVAC trenutni = lista->glava;
- POKAZIVAC prethodni = NULL;
- noviElement->podatak = noviPodatak;
- if (pozicija == 1){
- ubaciBrojNaPocetakListe(lista, noviPodatak);
- return;
- }
- while (trenutni!=NULL && redniBroj<pozicija)
- {
- prethodni = trenutni;
- trenutni = trenutni->sledeci;
- redniBroj++;
- }
- prethodni->sledeci = noviElement;
- noviElement->sledeci = trenutni;
- }
- void prikaziListu(LISTA lista){
- POKAZIVAC privremeniPomagac = lista->glava;
- printf("\n************************************************************************\n");
- while (privremeniPomagac != NULL){
- printf("%d\t", privremeniPomagac->podatak);
- privremeniPomagac = privremeniPomagac->sledeci;
- }
- printf("\n************************************************************************\n");
- }
- void izbaciBrojSaPocetkaListe(LISTA lista){
- POKAZIVAC pomocni = lista->glava;
- if (lista->glava == NULL){
- printf("LISTA JE PRAZNA !!!\n");
- return;
- }
- lista->glava = lista->glava->sledeci;
- printf("Broj koji je izbacen je %d!", pomocni->podatak);
- pomocni = NULL;
- free(pomocni);
- if (lista->glava == NULL){
- lista->rep = NULL;
- }
- }
- void izbaciBrojSaKrajaListe(LISTA lista){
- POKAZIVAC pomocni = lista->glava;
- POKAZIVAC pomocni2 = NULL;
- if (lista->glava == NULL){
- printf("LISTA JE PRAZNA !!!\n");
- return;
- }
- while (pomocni->sledeci != NULL){
- pomocni2 = pomocni;
- pomocni = pomocni->sledeci;
- }
- lista->rep = pomocni2;
- if (lista->rep != NULL){
- lista->rep->sledeci = NULL;
- }
- else{
- lista->glava = NULL;
- }
- pomocni = NULL;
- free(pomocni);
- }
- void izbaciSaOdredjenogMestaUListi(LISTA lista, int pozicija){
- int redniBroj = 1;
- POKAZIVAC trenutni = lista->glava;
- POKAZIVAC prethodni = NULL;
- if (lista->glava == NULL){
- printf("Lista je prazna!!!\n");
- return;
- }
- while (trenutni != NULL && redniBroj<pozicija)
- {
- prethodni = trenutni;
- trenutni = trenutni->sledeci;
- redniBroj++;
- }
- if (trenutni == NULL){
- printf("Element ne postoji!!!\n");
- return;
- }
- if (trenutni == lista->glava){
- izbaciBrojSaPocetkaListe(lista);
- return;
- }
- prethodni->sledeci = trenutni->sledeci;
- free(trenutni);
- }
- void promeniOdredjenBroj(LISTA lista, int brojKojiSeMenja,int brojKojiPostaje){
- POKAZIVAC pomocni = lista->glava;
- if (lista->glava == NULL){
- printf("Lista je prazna!!!\n");
- return;
- }
- while (pomocni != NULL){
- if (pomocni->podatak == brojKojiSeMenja){
- pomocni->podatak = brojKojiPostaje;
- }
- pomocni = pomocni->sledeci;
- }
- }
- void naciMaxULISTI(LISTA lista){
- int MAX = 0;
- POKAZIVAC trenutni = lista->glava;
- if (lista->glava == NULL){
- printf("Lista je prazna!!!\n");
- return;
- }
- while (trenutni != NULL){
- if (MAX < trenutni->podatak){
- MAX = trenutni->podatak;
- }
- trenutni = trenutni->sledeci;
- }
- printf("MAX U OVOJ LISTI JE %d\n", MAX);
- }
- int proveraDaLiUListiVecPostojiOvajBroj(LISTA lista, int broj){
- POKAZIVAC trenutni = lista->glava;
- int postoji = 0;
- while (trenutni != NULL){
- if (trenutni->podatak == broj){
- postoji = 1;
- return postoji;
- }
- trenutni = trenutni->sledeci;
- }
- return postoji;
- }
- void presekDveListe(LISTA lista1, LISTA lista2){
- POKAZIVAC spori, brzi;
- LISTA lista3;
- int postoji;
- spori = lista1->glava;
- brzi = lista2->glava;
- kreirajListu(&lista3);
- while (spori != NULL){
- brzi = lista2->glava;
- while (brzi != NULL){
- if (spori->podatak == brzi->podatak){
- postoji = proveraDaLiUListiVecPostojiOvajBroj(lista3, spori->podatak);
- if (postoji != 1){
- ubaciBrojNaPocetakListe(lista3, spori->podatak);
- break;
- }
- }
- brzi = brzi->sledeci;
- }
- spori = spori->sledeci;
- }
- printf("PRESEK PRVE I DRUGE LISTE!!!\n");
- prikaziListu(lista3);
- }
- void unijaDveListe(LISTA lista1, LISTA lista2){
- POKAZIVAC trenutni;
- int postoji;
- trenutni = lista2->glava;
- while (trenutni != NULL){
- postoji = proveraDaLiUListiVecPostojiOvajBroj(lista1, trenutni->podatak);
- if (postoji != 1){
- ubaciBrojNaKrajListe(lista1,trenutni->podatak);
- }
- trenutni = trenutni->sledeci;
- }
- printf("************************OVO JE UNIJA DVE LISTE************************\n");
- prikaziListu(lista1);
- }
- void sortirajListu(LISTA lista){
- POKAZIVAC spori, brzi;
- int pomocni;
- spori = lista->glava;
- while (spori != NULL){
- brzi = spori->sledeci;
- while (brzi != NULL){
- if (spori->podatak > brzi->podatak){
- pomocni = spori->podatak;
- spori->podatak = brzi->podatak;
- brzi->podatak = pomocni;
- }
- brzi = brzi->sledeci;
- }
- spori = spori->sledeci;
- }
- prikaziListu(lista);
- }
- void ubaciBrojUSortiranuListu(LISTA lista, int broj){
- POKAZIVAC trenutni, prethodni, noviElement = malloc(sizeof(ELEMENT));
- trenutni = lista->glava;
- prethodni = NULL;
- while (trenutni != NULL && trenutni->podatak<broj){
- prethodni = trenutni;
- trenutni = trenutni->sledeci;
- }
- if (trenutni == lista->glava){
- ubaciBrojNaPocetakListe(lista, broj);
- }
- else if (trenutni == NULL){
- ubaciBrojNaKrajListe(lista, broj);
- }
- else {
- noviElement->podatak = broj;
- prethodni->sledeci = noviElement;
- noviElement->sledeci = trenutni;
- }
- }
- int main(void){
- LISTA lista1,lista2;
- kreirajListu(&lista1);
- kreirajListu(&lista2);
- ubaciBrojNaPocetakListe(lista1, 5);
- ubaciBrojNaPocetakListe(lista1, 4);
- ubaciBrojNaPocetakListe(lista1, 3);
- ubaciBrojNaPocetakListe(lista2, 5);
- ubaciBrojNaPocetakListe(lista2, 4);
- ubaciBrojNaPocetakListe(lista2, 3);
- ubaciBrojNaPocetakListe(lista2, 6);
- ubaciBrojNaPocetakListe(lista2, 35);
- ubaciBrojNaPocetakListe(lista2, 50);
- ubaciBrojNaKrajListe(lista1, 6);
- ubaciBrojNaKrajListe(lista1, 7);
- ubaciBrojNaKrajListe(lista1, 8);
- ubaciNaOdredjenoMestoUListi(lista1, 15, 4);
- ubaciNaOdredjenoMestoUListi(lista1, 2, 1);
- ubaciNaOdredjenoMestoUListi(lista1, 20, 9);
- /*izbaciBrojSaPocetkaListe(lista1);
- izbaciBrojSaPocetkaListe(lista1);*/
- /*izbaciBrojSaKrajaListe(lista1);
- izbaciBrojSaKrajaListe(lista1);*/
- /*izbaciSaOdredjenogMestaUListi(lista1, 9);
- izbaciSaOdredjenogMestaUListi(lista1, 8);
- izbaciSaOdredjenogMestaUListi(lista1, 1);*/
- promeniOdredjenBroj(lista1, 2, 25);
- promeniOdredjenBroj(lista1, 20, 25);
- promeniOdredjenBroj(lista1, 25, 35);
- prikaziListu(lista1);
- prikaziListu(lista2);
- presekDveListe(lista1, lista2);
- unijaDveListe(lista1, lista2);
- /*naciMaxULISTI(lista1);*/
- printf("OVO JE SORTIRANA LISTA\n");
- sortirajListu(lista1);
- ubaciBrojUSortiranuListu(lista1, 30);
- ubaciBrojUSortiranuListu(lista1, 2);
- ubaciBrojUSortiranuListu(lista1, 9);
- ubaciBrojUSortiranuListu(lista1, 70);
- prikaziListu(lista1);
- return 0;
- }
- /*
- typedef struct igrac{
- ....
- ....
- ....
- ....
- }IGRAC;
- typedef struct element * POKAZIVAC;
- typedef struct element{
- IGRAC podatak;
- POKAZIVAC sledeci;
- }ELEMENT;
- typedef struct glavaRep * LISTA;
- struct glavaRep{
- POKAZIVAC glava;
- POKAZIVAC rep;
- };
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement