Član
- Učlanjen(a)
- 17.06.2011
- Poruka
- 7
Ako ima neko voljan da mi malo pojasni Liste u c++
npr. ovaj kod slabo kontam, nesto mu fali ali ja ne znam da ispravim to jer slabo sam skuzio ove liste
npr. ovaj kod slabo kontam, nesto mu fali ali ja ne znam da ispravim to jer slabo sam skuzio ove liste
Kod:
# include <iostream>using namespace std;
struct Cvor
{
int broj;
Cvor* sljedeci;
};
struct Lista
{
Cvor* glava;
};
int Cvor
void dodaj(Lista& l, Cvor& c)
{
if(l.glava == NULL)
{
l.glava = &c;
}
else
{
Cvor* tmp = l.glava;
while(tmp->sljedeci != NULL)
{
tmp = tmp -> sljedeci;
}
tmp -> sljedeci = &c;
}
}
int brojElemenata(Lista &l )
{
int brojac = 0;
Cvor* tmp = l.glava;
while(tmp != NULL)
{
tmp = tmp -> sljedeci;
brojac++;
}
return brojac;
}
void ispis(Lista& l)
{
}
void dodaj(Lista& l, Cvor &c, int indeks)
{
if(indeks == 0)
{
if(l.glava == NULL)
{
l.glava = &c;
}
else
{
c.sljedeci = l.glava;
l.glava = &c;
}
}
else if(brojElemenata (l) <= indeks)
{
dodaj(l, c);
}
else
{
if(l.glava == NULL)
{
l.glava = &c;
}
else
{
Cvor* tmp = l.glava;
for (int i = 0; i < indeks-1; i++)
{
tmp = tmp ->sljedeci;
}
c.sljedeci = tmp ->sljedeci;
tmp ->sljedeci = &c;
}
}
}
Cvor* ukloni(Lista &l, int indeks)
{
if(l.glava == NULL)
{
return NULL;
}
else
{
int br = brojElemenata(l);
if(indeks < brojElemenata(l) && indeks >= 0)
{
if(indeks == 0)
{
Cvor* tmp = l.glava;
l.glava = tmp -> sljedeci;
tmp -> sljedeci = NULL;
return tmp;
}
else if(indeks == (br - 1))
{
Cvor* p = l.glava;
while(p->sljedeci->sljedeci != NULL)
{
p = p->sljedeci;
}
Cvor* tmp = p ->sljedeci
p ->sljedeci = NULL;
return tmp;
}
else
{
Cvor* p = l.glava;
for (int i = 0; i< indeks - 1; i++)
{
p = p->sljedeci;
}
Cvor *tmp = p-> sljedeci;
p-> sljedeci = p->sljedeci->sljedeci;
tmp ->sljedeci = NULL
return tmp;
}
}
}
return NULL;
}
int main()
{
Lista* l= new Lista();
l->glava = NULL;
int opcija = 1;
while(opcija != 0)
{
cout<<"1. Dodaj novi cvor."<<endl;
cout<<"2. Dodaj novi cvor na poziciju."<<endl;
cout<<"3. Ispisi listu."<<endl;
cout<<"4. Ukloni cvor iz liste."<<endl;
cout<<"0. Izlaz."<<endl;
cin>>opcija;
switch(opcija)
{
case 1:
{
int b;
cout<<"Unesite broj: ";
cin>>b;
Cvor *novi = iniCvor(b);
dodaj(*l, *novi);
break;
}
case 1:
{
int b, i;
cout<<"Unesite broj: ";
cin>>b;
cout<<"Unesite indeks: ";
cin>>i
Cvor *novi = iniCvor(b);
dodaj(*l, *novi, i);
break;
}
case 3:
{
ispisListe(*l);
break;
}
case 4:
{
int i;
cout<<"Unesite indeks: ";
cin>>i;
Cvor* c = ukloni(*1, i);
if(c != NULL)
{
cout<<"Uklonjen je cvor sa brojem: "<<c->broj<<endl;
delete c;
}
else
{
cout<<"Nije uklonjen cvor"<<endl;
}
break;
}
}
}
return 0;
}