Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include "biblioteka_vrijeme.cc"
- using namespace std;
- struct tnode{
- int rBR;
- char nR[150];
- int cK;
- int kolicina;
- double vU;
- tnode *next;
- tnode *prev;
- tnode *l;
- tnode *d;
- };
- int alokacija(tnode *glava, tnode *korijen){;
- if(!(glava == NULL)){
- cout << "Glava v.l. i korijen b.s. vec su alocirani >:X\n\n";
- return 0;
- }
- else{
- cout <<"Alocirali ste glavu v.l. i korijen b.s. :D\n\n";
- return 1;
- }
- }
- int Velicina_liste(tnode *glava){ //DRUGO Testiranje
- if(glava == NULL) return 0;
- tnode *lista = glava;
- int cout = 0;
- while(lista->next){ //Sljedece 3-4 linije koda komentirati sve dok AddNodeEnd nije gotof
- cout++;
- lista = lista->next;
- }
- return cout;
- }
- void addNodeEnd(tnode *glava){
- if(glava == NULL) return;
- cout <<"Broj elementa u vezanoj listi iznosi " <<Velicina_liste(glava) << endl;
- tnode * lista = glava;
- tnode * prevLista = glava;
- double broj=0;
- bool potvrda = false;
- while(lista->next) lista = lista->next;
- prevLista = lista;
- lista = lista->next = new tnode;
- lista->next = NULL;
- lista->prev = prevLista;
- vrijeme_pocetak();
- cout << "Unesite redni broj robe\nR:= ";
- cin >> lista->rBR;
- cout << "Unesite naziv robe\nC:= ";
- unos(lista->nR);
- cout << "Unestie cijenu komada\nCK:= ";
- cin >> lista->cK;
- cout <<"Unesite kolicinu robe\nK:= ";
- cin >> lista->kolicina;
- vrijeme_kraj();
- lista->vU = vrijeme_proteklo();
- broj = vrijeme_proteklo()/1000;
- cout <<"Proteklo je " << broj << " sekundi\n";
- cout << "Vrijednost robe iznosi " << lista->cK*lista->kolicina << endl;
- cout << "Zelite li potvriditi unos (0:- ne, 1:- da)?\nU:= ";
- cin >> potvrda;
- if(potvrda){
- lista = glava->next;
- while (lista){
- cout << "Redni broj robe: " << lista->rBR << "\nNaziv robe: " << lista->nR << "\nVrijednost robe: " << lista->cK*lista->kolicina << "\nVrijeme unosa: " << lista->vU/1000 << " sekundi\n";
- lista = lista->next;
- }
- cout << endl;
- }
- else{
- cout << "Vrijeme unosa iznosi: " << broj;
- while(lista->next) lista = lista->next;
- prevLista = lista->prev;
- prevLista->next = NULL;
- delete lista;
- cout <<"\nBroj elementa u vezanoj listi iznosi " <<Velicina_liste(glava) << endl << endl;
- }
- }
- void addNodeBeg(tnode *glava, int number){
- //TRECE TESTIRANJE, testrati s samo jednom linijkom koda
- if(glava == NULL) return;
- tnode* lista = new tnode;
- tnode* listaNext;
- lista->prev = glava;
- lista->next = NULL;
- vrijeme_pocetak();
- cout << "Unesite redni broj robe\nR:= ";
- cin >> lista->rBR;
- cout << "Unesite naziv robe\nC:= ";
- unos(lista->nR);
- cout << "Unestie cijenu komada\nCK:= ";
- cin >> lista->cK;
- cout <<"Unesite kolicinu robe\nK:= ";
- cin >> lista->kolicina;
- vrijeme_kraj();
- lista->vU = vrijeme_proteklo();
- cout <<"Vrijeme unos iznosi: " <<vrijeme_proteklo()/1000 << " sekundi\n";
- while(lista->cK <= 0 || lista->kolicina <= 0){
- cout << "Unesene su nemoguce vrijednosti!\n";
- cout << "Unestie cijenu komada\nCK:= ";
- cin >> lista->cK;
- cout <<"Unesite kolicinu robe\nK:= ";
- cin >> lista->kolicina;
- }
- if(glava->next!=NULL){ //15
- listaNext=glava->next;
- listaNext->prev=lista;
- lista->next = listaNext;
- }
- glava->next = lista;
- while(lista->next) lista= lista->next;
- while(lista->prev){ //16
- cout << "Redni broj robe: " << lista->rBR << "\nNaziv robe: " << lista->nR << "\nVrijednost robe: " << lista->cK*lista->kolicina << "\nVrijeme unosa: " << lista->vU/1000 << " sekundi\n\n";
- lista = lista ->prev;
- }
- }
- void binSort(tnode *korijen, bool sort){ //21
- static tnode *stablo = korijen;
- if(korijen == NULL) return;
- if(!sort) binSort(korijen->l,sort);
- else binSort(korijen->d, sort);
- if(korijen != stablo) cout << "Redni broj robe: " << korijen->rBR << "\nNaziv robe: " << korijen->nR << "\nCijena komada robe: " << korijen->cK <<"\nKolicina robe: " << korijen->kolicina << "\nVrijeme unosa: " << korijen->vU/1000 << " sekundi\n\n";
- if(!sort) binSort(korijen->d,sort);
- else binSort(korijen->l, sort);
- }
- void binTreeAdd(tnode *lista, tnode *korijen){ //20
- int n=1;
- if(korijen->rBR <= lista->rBR && korijen->l) binTreeAdd(lista,korijen->l);
- else if(korijen->rBR > lista->rBR && korijen->d) binTreeAdd(lista,korijen->d);
- else n = 0;
- if(n) return;
- tnode *drvo = korijen;
- drvo = (drvo->rBR>lista->rBR?drvo->d:drvo->l) = new tnode;
- drvo->rBR = lista->rBR;
- drvo->kolicina = lista->kolicina;
- drvo->cK = lista->cK;
- drvo->vU = lista->vU;
- strcpy(drvo->nR, lista->nR);
- drvo->l = drvo->d = NULL;
- }
- void binTree(tnode *glava, tnode *korijen){
- if(glava == NULL){ //CETVRTO Testiranje, magic
- return;
- }
- if(korijen->l) korijen->l=NULL;
- if(korijen->d) korijen->d=NULL;
- tnode *lista = glava->next;
- while(lista){
- binTreeAdd(lista, korijen);
- lista=lista->next;
- }
- bool sort = false;
- cout << "0:- za silazno sortiranje; 1:- za ulazno\nU: ";
- cin >> sort;
- binSort(korijen, sort);
- }
- int main(){
- tnode *glava = NULL;
- tnode *korijen = NULL;
- int izbor;
- do{
- cout <<"-----IZBORNIK-----\n0:- Alokacija glave v.l. i korijena b.s.\n1:- Dodavanje elementa na kraj d.v.l.\n2:- Dodavanje elementa na pocetak d.v.l.\n3:- Binarno stablo (kreiranje i ispis)\n4:-\n9:- Izalzak iz programa\nU:= ";
- cin >> izbor;
- switch(izbor){
- case 0:
- if(alokacija(glava,korijen)){
- glava = new tnode;
- glava->next = NULL;
- glava->prev = NULL;
- korijen = new tnode;
- korijen->l = NULL;
- korijen->d = NULL;
- }
- break;
- case 1:
- addNodeEnd(glava);
- break;
- case 2:
- addNodeBeg(glava, Velicina_liste(glava));
- break;
- case 3:
- binTree(glava, korijen);
- break;
- case 4:break; //PRVO TESTIRANJE
- }
- }while(izbor!=9);
- return 0;
- }
- void dealokacija(tnode *korijen){
- if(korijen->l)= dealokacija(korije->l);
- if(korijen->d) dealokacija(korijen->d);
- delete stablo;
- return;
- }
- tnode *find(tnode *korijen, int number){
- tnode *leaf = korijen;
- while(leaf){
- if((leaf->broj == broj) && (leaf!=korijen)) break;
- if(broj > leaf->broj) leaf = leaf->d;
- else leaf = leaf->l;
- }
- return leaf;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement