[ virtualx @ 29.01.2008. 08:20 ] @
Code: #include <iostream.h> #include <conio.h> struct Cvor{ int nazivc; Cvor *sljedeci; }; Cvor *glava = NULL, *rep = NULL; Cvor *iniCvor(); int brojClanova(); bool praznaLista(); void brisiCvor(); void dodajCvor(Cvor *cvor); void dodajCvorNaPoz(Cvor *cvor, int poz); void isprazniListu(); void ispisListe(); void main(){ int opcija = 1, poz; Cvor *cvor; while(opcija != 0){ cout<<"Meni:"<<endl; cout<<endl; cout<<"1. Unos novog cvora "<<endl; cout<<"2. Unos novog cvora na poziciju "<<endl; cout<<"3. Brisi prvi cvor "<<endl; cout<<"4. Brisanje svih cvorova "<<endl; cout<<"5. Ispis "<<endl; cout<<"0. Izlaz "<<endl; cout<<endl; cout<<"Izaberite opciju:"; cin>>opcija; switch(opcija){ case 1: cvor = iniCvor(); dodajCvor(cvor); break; case 2: cout<<"Pozicija na koju zelite unijeti vas cvor je:"; cin>>poz; cvor = iniCvor(); dodajCvorNaPoz(cvor, poz); break; case 3: brisiCvor(); break; case 4: isprazniListu(); break; case 5: ispisListe(); break; } } } Cvor *iniCvor(){ int nazivc; cout<<"Unesite broj cvora: "; cin>>nazivc; Cvor *pokCvor = new Cvor(); if(pokCvor == NULL){ cout<<"Unos nije dobar, pokusajte ponovo "<<endl; return NULL; } pokCvor->nazivc = nazivc; pokCvor->sljedeci = NULL; return pokCvor; } void dodajCvor(Cvor *cvor){ if(glava == NULL){ glava = cvor; rep = cvor; } else{ cvor->sljedeci = glava; glava = cvor; } } void dodajCvorNaPoz(Cvor *cvor, int poz){ int brojac = 2; if(poz > brojClanova() + 1 || poz == 0){ cout<<"Nije moguce unijeti cvor na datu poziciju "<<endl; } else{ if(poz == 1){ dodajCvor(cvor); return; } else if(poz == brojClanova() + 1){ rep->sljedeci = cvor; rep = cvor; } else{ Cvor *pret, *sljed; pret = glava; sljed = pret->sljedeci; while(brojac != poz){ pret = pret->sljedeci; sljed = pret->sljedeci; brojac++; } cvor->sljedeci = sljed; pret->sljedeci = cvor; } } } void ispisListe(){ if(praznaLista()){ cout<<"Lista je prazna "<<endl; } else{ Cvor *tmp = glava; while(tmp != NULL){ cout <<tmp->nazivc<<endl; tmp = tmp->sljedeci; } } } int brojClanova(){ int brojac = 0; Cvor *tmp = glava; while(tmp != NULL){ brojac++; tmp = tmp->sljedeci; } return brojac; } bool praznaLista(){ if(glava == NULL) return true; else return false; } void isprazniListu(){ if(praznaLista()) cout<<"Lista je vec prazna "<<endl; else{ while(glava != NULL){ glava = glava->sljedeci; } } } void brisiCvor(){ if(praznaLista()) cout<<"Lista je vec prazna "<<endl; else{ Cvor *tmp = glava; glava = glava->sljedeci; delete tmp; } } problem je u ovome: void isprazniListu(){ if(praznaLista()) cout<<"Lista je vec prazna "<<endl; else{ while(glava != NULL){ glava = glava->sljedeci; } } treba osloboditi (delocirati) memoriju koju su zauzeli cvorovi ,sa delete. e sad kako da to uradim. |