Mala pomoc

2

Mala pomoc

offline
  • 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.
offline
  • Nom  Male
  • 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 Wink
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.



offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23208
  • 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;

offline
  • pixxel  Male
  • 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)

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23208
  • 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

offline
  • 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.

offline
  • DXM 
  • Novi MyCity građanin
  • 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

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23208
  • Gde živiš: Niš

ko ne provali sta ovako mala funkcija radi - i ne treba da polozi ispit, iskreno
no hard feelings...

offline
  • meka  Male
  • 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.

offline
  • 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 Wink

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

Ko je trenutno na forumu
 

Ukupno su 662 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 659 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Hoegaarden, pacika, Snorks