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;
}
}
#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.