[ stale85 @ 16.05.2003. 00:59 ] @
Posto trenutno citam knjigu C++ za linux i cisto radi vezbe sam

napisao kod koji je u stvari povezana lista, sa cvorom koji sadrzi

celobrojne podatke. Imam Head cvor i Tail cvor koji su neka vrsta

ogranicavaca. Iz klase Node su izvedene Head(bez podataka), Tail(bez

podataka), InternalNode(sa podacima). Ovo je naravno skolski primer

jednosmerne povezane liste. Program se kompajlira ali u

toku izvrsavanja programa on pri unosu podataka u listu se zablokira.

Dacu vam onaj deo koda koji se izvrsava do prekida. Posto nemam bas

mnogo iskustva u programiranju, nemogu da nadjem gresku ma koliko se

trudio.

ll.InsertNode(value); // Objekat Klase List poziva funkciju za unosenje

//podataka iz main funkcije

void List::InsertNode (int value)
{
itsHeadNode->InsertNode(value);//Objekat Klase Head poziva funkciju

za //unosenje podataka
}

Node* HeadNode::InsertNode (int value)
{
itsNext = itsNext->InsertNode(value); //itsNext je pointer na sledeci
//Node u listi
return this;
}

Node* InternalNode::InsertNode (int value)
{
if (value >= itsValue)
{
Node* bigNode= new InternalNode (value, this);
return bigNode;
}
else
{
itsNext = itsNext->InsertNode(value);
return this;
}
}

InternalNode::InternalNode (int value, Node* next)
itsNext(next),
itsValue(value)
{}
[ leka @ 16.05.2003. 17:07 ] @
Aploaduj sors molim te, jer ovu sumu znakoga ne mogu da gledam - bole me oci...
[ stale85 @ 16.05.2003. 23:40 ] @
Ovde je upload!

[Ovu poruku je menjao stale85 dana 17.05.2003. u 10:20 GMT]
[ leka @ 17.05.2003. 01:02 ] @
"Stanislave..." (Ako si gledao Radovana III)

Kad sam mislio na upload, mislio sam da sors zapakuješ u .zip i PRILEPIŠ uz onu tvoju (prvu) poruku! :)

Evo gledah ovo malo, sa listama se ovako ne radi u praksi (ili ja nemam pojma o osnovnim strukturama podataka).

Recimo TailNode je, po meni, totalno nepotrebna klasa, jer uglavnom u implementaciji jednostruko ili dvostruko povezanih listi programer unapred ima u vidu da će krajnji čvorovi imati pokazivač "next" koji referiše NULL, jel tako?

Ali, da ne skrećem sa teme, ovu raspravu možemo da sprovedemo kasnije, kad pronađemo problem u tvom kodu. Da bismo to odradili što pre molim te prilepi kod, da budem iskren mrzi me da se mučim sa GNU ident-om da od ove "šume" dole imam u svom editoru lako čitljiv kod. :)

Hajde pa se čitamo...
[ -zombie- @ 17.05.2003. 01:19 ] @
e leko, postao si aljkav.. ;)

samo citiraj poruku, i dobićeš indentovan kod..
[ t3chX @ 17.05.2003. 01:31 ] @
TailNode ne bi ni trebala biti klasa nego samo jedan od clanova linkedlist.h (pointer).

U samom node.h treba da postoji deklarisana dva pointera data i next. Data bi trebala da bude templejtovanog tipa, a next uvek da pokazuje na NULL u samom konstruktoru.
Sto se tice linkedlist.h, tail bi trebalo da bude pointer na zadnji node u listi, a head na prvi (logicno?!).
Za dodavanje, mozda metod append() ...
Za ubacivanje elemenata negde u listu (citaj SREDINU) trebalo bi da je predjes celu sa dva pointera, recimo currNode i nextNode, pa gledaj na osnovu cega ubacujes node ... (moze biti recimo prioritet).

Enivej, ovo su elementarne stvari stvarno ...
[ leka @ 17.05.2003. 01:54 ] @
T3chX, jesu elementarne, ali neko ni njih ne zna (dok ih ne nauči) :)

Elem Stanislave kućo, objasni ovo parče koda - nešto ga ne razumem baš najboljšije, a ako ga dobro razumem, onda mislim da "u tom zecu leži grm".

Code:

Node *
HeadNode::InsertNode (int value)
{
  itsNext = itsNext->InsertNode (value);
  return this;
}

[ stale85 @ 17.05.2003. 10:19 ] @
ItsNext je pointer na sledeci objekat u listi. On poziva funkciju InsertNode koja za argument ima celobrojnu vrednost i vraca pointer na objekat tipa Node. HeadNode ne bi trebao da vraca vrednost ali to radi samo zato sto se izvodi iz apstraktne klase Node i ako taj metod ne bi zaobisao i on sam bi postao apstraktna klasa i ne bi mogao da pravim objekat tipa HeadNode(tako je uradjeno u primeru u knjizi). Mene zanima da li je "itsNext = itsNext->InsertNode(value);" regularno dodeljivanje. Ja pretpostavljam da jeste jer se kompajler nije bunio.
[ leka @ 17.05.2003. 21:34 ] @
Iz "perspektive" kompajlera taj kod je regularan i zato se kompajler ne buni, medjutim taj kod mislim da je pogresan, hajde pronadji zasto. Ili ako si siguran, dokazi da je kod ispravan/korektan.
[ stale85 @ 17.05.2003. 23:46 ] @
Izmenio sam sve kao sto ste mi rekli i sve je lepo proradilo.
Hvala vam na trudu i pomoci.