» »

[C++] enosmerno povezan seznam

[C++] enosmerno povezan seznam

alum ::

Zdravo!

Rad bi naredil funkcijo, preko katere bi vnesel studenta, ta pa ga ne bi shranila na konec seznama studentov (naredil sem ze funkcijo za hrambo na zacetek seznama)...



struct student
{
string ime;
int starost;
student* k_next;
};

// hramba na zacetek
int NaZacetek(student*& k_vsi, student*& k_stud, int& stevec)
{
string ime;
int starost;

cout < "Vnesite ime:";
cin > ime;
cout < "Vnesite starost:";
cin > starost;

k_stud = new student;


if(k_stud == NULL)
{
cout < "Napaka!" < endl;
return 1;
}

k_stud->ime = ime;
k_stud->starost = starost;

k_stud->k_next = k_vsi;
k_vsi = k_stud;

stevec++;

return 0;

}

//hramba na konec
int NaKonec(student*& k_vsi, student*& k_stud, int& stevec)
{
string ime;
int starost;

cout < "Vnesite ime:";
cin > ime;
cout < "Vnesite starost:";
cin > starost;

if(stevec == 0)
NaZacetek(k_vsi, k_stud, stevec);
else
{
while(k_vsi != NULL)
k_vsi = k_vsi->k_next;

// tukaj sem poskusil preskocit vse strukture student
// vendar mi nikakor ne rata

stevec++;
}


return 0;

}


int main()
{

student* k_vsi;
student* k_stud;

k_vsi = NULL;
k_stud = NULL;

NaZacetek(k_vsi, k_stud, stevec);
NaKonec(k_vsi, k_stud, stevec);



return 0;
}


funkcija za izpis in ostalo je narejena...

aja, kjer bi morali biti < < je le ena (nedovoljena HTML oznaka)

lp, wakum

P.S.: Za vse, ki boste vprasali...ja FERI:D

[edit - za začetek preberi sticky teme v tem oddelku - vsc]
  • spremenil: Vesoljc ()

Vesoljc ::

ponavadi je tako, da glavo (k_vsi) seznama ne spreminjaš. če se hočeš sprehoditi prek seznama, uporabi začasnega sprehajalca.
student* k_vsi;
student* k_stud;
student* k_sprehajalec;

k_sprehajalec = k_vsi;
while(k_sprehajalec != NULL)
   k_sprehajalec = k_sprehajalec->k_next;
Abnormal behavior of abnormal brain makes me normal...

alum ::

ja...saj za sprehajanje sem uporabljal k_stud...tukaj sem k_vsi pozabil kopirat v k_stud...no kakorkoli ze, problem je resen, zdaj pa me zanima, v cem je poanta dvosmerno povezanega seznama...kot sem slisal, bi naj struktura imela se en kazalec, ki bi kazal na prejsno sturkturo...

bi bilo potemtakem lazje izpisati seznam v obratnem vrstnem redu?se vedno mi kazalci niso najbolj jasni...

Gundolf ::

Ce imas enosmerno povezan seznam to pomeni, da lahko od prvega elementa prides kamorkoli, od tretjega elementa pa npr. ze ne mores vec nazaj v drugega ali prvega (ok, pointer na prvega imas verjetno vedno na voljo ampak ni v tem poanta) Ce imas dvosmerno povezan seznam imas vedno na voljo povezavo od tretjega nazaj na drugega. Seznam lahko pregledujes tudi od zadaj proti zacetku.

Predstavlajj si analogijo s cesto. Od kraja A do Kraja Z imas cesto, ki gre skozi vmesne kraje (B..Y). Ko se odpravis iz A opazis, da se v vsakem od teh krajev cesta razcepi v neskoncno smeri (od teh gre vecina v segmentation fault), a na sreco imas en smerokaz, ki kaze na naslednji kraj na tvoji poti do Z. Ko si v Z ne znas vec nazaj, ker ti nikjer ni smerokaza kam iti. Ce imas dvsmerni seznam pa so vsi ti smerokazi dvojni, eden kaze na naslednji kraj eden pa na prejsnji kraj. Tako bos vedno nasel pot, ne glede na to kam gres.

Najbolje pri teh seznamih je, da lahko zacnes nekje na sredi in se premikas kamor ti pase.

Vesoljc ::

Abnormal behavior of abnormal brain makes me normal...

xtpwn ::

Ali mi lahko kdo pomaga pri razlagi enosmerno/dvosmerno povezan seznam, ker nikakor ne razumem, niti ne vem kako bi se naj lotil zadeve.
Če je kak prostovoljec se mi naj prosim javi v zs.

3p ::

xtpwn je izjavil:

Ali mi lahko kdo pomaga pri razlagi enosmerno/dvosmerno povezan seznam, ker nikakor ne razumem, niti ne vem kako bi se naj lotil zadeve.
Če je kak prostovoljec se mi naj prosim javi v zs.


Joj, lenoba, sem mislil, da se dijaki/študenti vsaj do wikipedije znate pritolči. ;(
Linked list @ Wikipedia


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Naloge

Oddelek: Programiranje
273928 (2259) LordiBoy
»

[C++] Naloga seznam

Oddelek: Programiranje
223203 (2478) Matic1911
»

[C++] Linker error

Oddelek: Programiranje
51241 (1241) Quikee
»

Kazalci

Oddelek: Programiranje
141456 (1288) upirna
»

c++ datoteke

Oddelek: Programiranje
463899 (3388) Vesoljc

Več podobnih tem