|
Poslao: 29 Jun 2005 13:50
|
offline
- bNasty

- Građanin
- Pridružio: 17 Mar 2004
- Poruke: 293
- Gde živiš: UK
|
pixxel ::@bNasty:
a sta onda radi tekuci=niz?????
nista???
Pa ne radi nishta, jer je 'tekuci' lokalna promenljiva i jer je uslov za izlaz i while petlje takav kakav je.
Iz while petlje se izlazi sa tekuci = NULL, pa se zatim u 'tekuci' ubaci originalni pointer i to je to. izlazi iz funkcije bez promene argumenata, tj. bez diranja u originalnu listu.
Da je petlja bila malo drugachija i proverala tekuci->sled za vrednost NULL, pa u tom sluchaju linkovala 'niz' u list, onda bi funkcija napravila "kruzhnu listu". Ovako, funkcija ne radi bash nishta sa listom.
|
|
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 29 Jun 2005 14:13
|
offline
- Nom

- Građanin
- Pridružio: 17 Nov 2004
- Poruke: 168
- Gde živiš: Shanghai, China
|
typedef struct elem {int broj; elem *sled;} Elem;
void StaRadi (elem*niz)
{
elem *tekuci=niz;
while (tekuci) tekuci=tekuci->sled;
tekuci=niz;
}
Hm, pa prvo, ako joj prosledis NULL, onda pukne, to radi prvo
Drugo, 'pomera' tekuci na 'sledeci' pointer, dok nije NULL, a onda vrati na inicijalnu adresu tj. pointer... ne dodaje nista jer nema new, ne moze nista da doda.
Trece ne fali return jer je funkcija void a ne nesto drugo. Return moze samo ako vraca void tj. return; sto na kraju f-je i ne treba.
Moj zakljucak: funkcija ne sluzi nicemu.
Da je sve to ovako izgledalo:
typedef struct elem {int broj; elem *sled;} Elem;
elem *StaRadi (elem*niz)
{
if(!niz) return NULL;
elem *tekuci=niz;
while (tekuci->sled) tekuci=tekuci->sled;
return tekuci;
}
onda bi cela prica imala smisla, f-ja bi vracala poslendji pointer u nizu ondosno NULL ako ga nema.
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 14:26
|
offline
- Peca

- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23212
- Gde živiš: Niš
|
Bone Collector ::tacan odgovor je ovo i tu ne fali nista
duplira listu tako sto doda istu listu na kraju liste
netacno [mada su vec drugi odgovorili]
'tekuci' je lokalna promenljiva, koja nema nikakav uticaj van funkcije
ma fali
return tekuci;
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 15:10
|
offline
- pixxel

- Legendarni građanin
- Pridružio: 21 Jun 2005
- Poruke: 9091
- Gde živiš: Tu i tamo...
|
Ljudi, to je laslo pisao, to je napravljeno samo da namuci mozak, ja sam sad u junu kod njega jedva izvukao 7... Verovatno i ne radi nista, ali laslo ima fazon da te jako precizno pita, a ti da protrcis i da ne vidis sta je u stvari trazio...
P.S. sta je otvorena lista, liste su mi rak rana...(vidi postavku zadatka u prvom postu)
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 15:21
|
offline
- Peca

- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23212
- Gde živiš: Niš
|
ako se u ovako prostoj funkciji pogubis... :-|
meni je posle 15 sekundi gledanja bilo jasno da funkcija ne radi nista, iz aviona se vidi
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 16:09
|
offline
- bobby

- Administrator
- Pridružio: 04 Sep 2003
- Poruke: 24135
- Gde živiš: Wien
|
@Pixxel
LinkedList je lista kod koje je svaki elemenat cvor. Svaki cvor se sastoji od vrednosti koje sadrzi, i pointera na sledeci cvor u listi.
Ovakva struktura je potrebna zbog dinamickih listi.
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 16:12
|
offline
- Pridružio: 18 Okt 2004
- Poruke: 19
|
Naravno. Sve sto se "mijenja" u funkciji je tekuci a to je lokalna var. kao sto su i ostali rekli. Na kraju se cak tekuci ponovo "postavlja" na "niz" kao na pocetku
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 16:24
|
offline
- Peca

- Glavni Administrator
- Predrag Damnjanović
- SysAdmin i programer
- Pridružio: 17 Apr 2003
- Poruke: 23212
- Gde živiš: Niš
|
ko ne provali sta ovako mala funkcija radi - i ne treba da polozi ispit, iskreno
no hard feelings...
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 19:15
|
offline
- meka

- Počasni građanin
- Pridružio: 06 Avg 2003
- Poruke: 811
- Gde živiš: Novi Sad / Vojvodina
|
Peco, funkcija moze da vrati tekuci i to je jednostavno adresa na koju pokazuje taj pointer. Pixxel, otvorena lista je lista u koju mozes da stavis podatak bilo kog tipa ili velicine. Stvar je u tome da imas nesto kao (jako, jako skraceno i neupotrebljivo)
class Node
{
Node *sledeci;
unsigned size;
};
Povezes ovo u listu (uz jos malo dodatnog koda) i dobijes otvorenu listu.
|
|
|
|
|
|
|
Poslao: 29 Jun 2005 21:39
|
offline
- Bone Collector

- Legendarni građanin
- Pridružio: 18 Apr 2003
- Poruke: 5001
- Gde živiš: Beograd
|
pixxel ::Ljudi, to je laslo pisao, to je napravljeno samo da namuci mozak, ja sam sad u junu kod njega jedva izvukao 7... Verovatno i ne radi nista, ali laslo ima fazon da te jako precizno pita, a ti da protrcis i da ne vidis sta je u stvari trazio...
P.S. sta je otvorena lista, liste su mi rak rana...(vidi postavku zadatka u prvom postu)
Pusti ih, ne znaju ljudi sta znaci polagati kod Lasla
Tekuci je samo pokazivac na neku spoljnu promenljivu tako da nije bitno da li je globalna/lokalna.
@Peca
Zadatak je takav kakav je, ne moze da fali nista cak i slucaju da nesto fali, samo drugaciji odgovor moras da das.
@bobby
Znam da ne dodaje nista, to me je zbunjivalo zato menjam misljenje i kazem da je ipak tacan odgovor "kruzna lista"
Dopuna: 29 Jun 2005 22:39
bobby ::Ovako bi pravilo kruznu listu:
typedef struct elem {int broj; *sled;} Elem;
void StaRadi (elem*niz)
{
elem *tekuci=niz;
while (tekuci) tekuci=tekuci->sled;
tekuci->sled=niz;
}
Ovde si pogresio, jer tebi je ovde tekuci jednak nuli tj. ne postoji elemenat na adresi tekuci, posto je while petlja zavrsila u trenutku kada je tekuci=0
|
|
|
|
|
|