Č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
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;
}
 
Natrag
Top