Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Trivijalna pitanja o strukturama, pokazivačima,...
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Incognito
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 09. 2005. (20:25:09)
Postovi: (B3)16
Sarma = la pohva - posuda
10 = 11 - 1

PostPostano: 19:54 pet, 2. 6. 2006    Naslov: Trivijalna pitanja o strukturama, pokazivačima,... Citirajte i odgovorite

Sad ću postaviti par vjerojatno glupih pitanja, ali meni će puno pomoći.
Tiču se implementacije liste pomoću pokazivača (iz skripte), ali i o strukturama i pointerima, itd.

Piše ovako:
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;

Što je sad tu ime te strukture? Kako se cell_tag koristi u strukturi cell_tag? Je li to možda pokazivač na takvu istu strukturu (ćeliju)?

Dalje piše:
typedef celltype *LIST;
typedef celltype *position;

Što su to sad? Pokazivači na onu gore strukturu imena LIST i position?

I dalje:
position END(LIST L) {
position q;
q=L;
while (q->next != NULL)
q=q->next;
return q;
}

Kao što se tu koriste LIST i position, kao kakav tip? I ako bi netko mogao malo pojasniti kako točno djeluje strelica ->, zaboravio sam. :?

Hvala

P.S. Jel može netko negdje napisati kako izgleda rješenje nekog zadatka? Jel se to piše tako da radi u C-u ili mogu već neke funkcije koristiti kao definirane, kao neki pseudo C ili ...? Svi nešto govore, staviš na hrpu, skineš, ideš po listi, ideš po stablu...; ali kako se to piše?
Sad ću postaviti par vjerojatno glupih pitanja, ali meni će puno pomoći.
Tiču se implementacije liste pomoću pokazivača (iz skripte), ali i o strukturama i pointerima, itd.

Piše ovako:
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;

Što je sad tu ime te strukture? Kako se cell_tag koristi u strukturi cell_tag? Je li to možda pokazivač na takvu istu strukturu (ćeliju)?

Dalje piše:
typedef celltype *LIST;
typedef celltype *position;

Što su to sad? Pokazivači na onu gore strukturu imena LIST i position?

I dalje:
position END(LIST L) {
position q;
q=L;
while (q->next != NULL)
q=q->next;
return q;
}

Kao što se tu koriste LIST i position, kao kakav tip? I ako bi netko mogao malo pojasniti kako točno djeluje strelica ->, zaboravio sam. Confused

Hvala

P.S. Jel može netko negdje napisati kako izgleda rješenje nekog zadatka? Jel se to piše tako da radi u C-u ili mogu već neke funkcije koristiti kao definirane, kao neki pseudo C ili ...? Svi nešto govore, staviš na hrpu, skineš, ideš po listi, ideš po stablu...; ali kako se to piše?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
shokre
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 05. 2003. (20:05:09)
Postovi: (4A)16
Spol: muško
Sarma = la pohva - posuda
= 5 - 0

PostPostano: 22:24 pet, 2. 6. 2006    Naslov: Re: Trivijalna pitanja o strukturama, pokazivačima,... Citirajte i odgovorite

[quote="Incognito"]Piše ovako:
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;

Što je sad tu ime te strukture? Kako se cell_tag koristi u strukturi cell_tag? Je li to možda pokazivač na takvu istu strukturu (ćeliju)?[/quote]
Ime tipa podatka (strukture) je "struct cell_tag". Ovdje se napravio i automatski "typedef" cime se definiralo da ce se struktura imena "struct cell_tag" (koja je definirana unutar viticastih zagrada) zvati "celltype". Dakle, gdje god bi ti definirao [code:1]struct cell_tag varijabla;[/code:1] mozes to definirati i kao [code:1]celltype varijabla;[/code:1] To je napravljeno zato da ti skrati pisanje i da ti omoguci da das neko smislenije ime tom svom tipu podatka.

cell_tag se koristi unutar sebe samoga kao pokazivac. Time zapravo ostvarujes vezanu listu...ti unutar jedne strukture imas pokazivac na jos jednu takvu istu (istu po "strukturi" podataka, a ne istu po sadrzaju) strukturu.

[quote="Incognito"]Dalje piše:
typedef celltype *LIST;
typedef celltype *position;

Što su to sad? Pokazivači na onu gore strukturu imena LIST i position?[/quote]
Ovdje se definira da je "LIST" drugo ime za tip podatka "celltype *", a posto je "celltype" vec definiran kao drugo ime za "struct cell_tag", to ti je "LIST" zapravo "struct cell_tag *". Dakle, kada napises [code:1]LIST lista;[/code:1] to ti je kao da si napisao [code:1]struct cell_tag *lista;[/code:1] Ista stvar je za "position". Gdje god pises "position", isto ti je kao da si napisao "celltype *", a to ti je kao da si napisao "struct cell_tag *".

Dakle, ti ovdje nisi definirao varijablu koja se zove LIST i koja je pointer na "celltype" nego si definirao da je LIST tip podatka koji je zapravo "celltype *". Tome sluzi "typedef". Opet, to se uvodi radi kraceg i smislenijeg zapisivanja.

[quote="Incognito"]I dalje:
position END(LIST L) {
position q;
q=L;
while (q->next != NULL)
q=q->next;
return q;
}

Kao što se tu koriste LIST i position, kao kakav tip? I ako bi netko mogao malo pojasniti kako točno djeluje strelica ->, zaboravio sam. :?[/quote]
Mislim da ti je u gornjem dijelu objasnjeno prvo pitanje.

Strelica ti djeluje ovako:
[code:1]pointer->varijabla[/code:1] ti je isto kao [code:1](*pointer).varijabla[/code:1]

Dakle, "q->next" ti je isto kao da si pisao "(*q).next".
Incognito (napisa):
Piše ovako:
typedef struct cell_tag {
elementtype element;
struct cell_tag *next;
} celltype;

Što je sad tu ime te strukture? Kako se cell_tag koristi u strukturi cell_tag? Je li to možda pokazivač na takvu istu strukturu (ćeliju)?

Ime tipa podatka (strukture) je "struct cell_tag". Ovdje se napravio i automatski "typedef" cime se definiralo da ce se struktura imena "struct cell_tag" (koja je definirana unutar viticastih zagrada) zvati "celltype". Dakle, gdje god bi ti definirao
Kod:
struct cell_tag varijabla;
mozes to definirati i kao
Kod:
celltype varijabla;
To je napravljeno zato da ti skrati pisanje i da ti omoguci da das neko smislenije ime tom svom tipu podatka.

cell_tag se koristi unutar sebe samoga kao pokazivac. Time zapravo ostvarujes vezanu listu...ti unutar jedne strukture imas pokazivac na jos jednu takvu istu (istu po "strukturi" podataka, a ne istu po sadrzaju) strukturu.

Incognito (napisa):
Dalje piše:
typedef celltype *LIST;
typedef celltype *position;

Što su to sad? Pokazivači na onu gore strukturu imena LIST i position?

Ovdje se definira da je "LIST" drugo ime za tip podatka "celltype *", a posto je "celltype" vec definiran kao drugo ime za "struct cell_tag", to ti je "LIST" zapravo "struct cell_tag *". Dakle, kada napises
Kod:
LIST lista;
to ti je kao da si napisao
Kod:
struct cell_tag *lista;
Ista stvar je za "position". Gdje god pises "position", isto ti je kao da si napisao "celltype *", a to ti je kao da si napisao "struct cell_tag *".

Dakle, ti ovdje nisi definirao varijablu koja se zove LIST i koja je pointer na "celltype" nego si definirao da je LIST tip podatka koji je zapravo "celltype *". Tome sluzi "typedef". Opet, to se uvodi radi kraceg i smislenijeg zapisivanja.

Incognito (napisa):
I dalje:
position END(LIST L) {
position q;
q=L;
while (q->next != NULL)
q=q->next;
return q;
}

Kao što se tu koriste LIST i position, kao kakav tip? I ako bi netko mogao malo pojasniti kako točno djeluje strelica ->, zaboravio sam. Confused

Mislim da ti je u gornjem dijelu objasnjeno prvo pitanje.

Strelica ti djeluje ovako:
Kod:
pointer->varijabla
ti je isto kao
Kod:
(*pointer).varijabla


Dakle, "q->next" ti je isto kao da si pisao "(*q).next".



_________________
~ Those who fear the Darkness have never seen what the Light can do! ~
[Vrh]
Korisnički profil Pošaljite privatnu poruku YIM
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan