Kezdőoldal » Számítástechnika » Programozás » Láncolt lista - most akkor...

Láncolt lista - most akkor hol az igazság?

Figyelt kérdés

A Wikipédia - konkrétan legeslegelső mondata - szerint:

"A láncolt lista egyike a számítógép-programozásban használatos legegyszerűbb adatszerkezeteknek."

...azaz LEGEGYSZERŰBB adatszerkezeteknek...


Az egyetemen mégis össze-vissza rémisztgetik vele a gólyákat.


Most akkor melyik az igaz?


Vagy ez igazából csak azt akarná mondani, hogy sz#rt se tanulunk az egyetemen a való élethez képest?

Akkor meg mi értelme az egyetemen kidobni négy évet, cserébe az életünk legstresszesebb végtelen hosszúságúnak tűnő négy évéért?!


2019. dec. 12. 22:49
1 2 3 4 5 6
 21/59 anonim ***** válasza:
79%

#19 "A láncolt lista nem azért láncolt lista, mert a következő vagy előző listaelem pozícióját pointerként tároljuk, hanem azért, mert a következő vagy előző listaelem [pozíciója] egyáltalán letárolásra kerül."


És ha letárolod a következő elem pozícióját, az micsoda? Egy referencia. A referencia pedig egy speciális pointer. Vagy ha így jobban tetszik, a pointer egy fajtája a refrenciáknak. Sokat nem számít, ami számít az az, hogy minden elem mutat a következő/előző/stb elemre a listában, ezen a szinten a pointer és a referencia egy kalap alá vehető.

2019. dec. 14. 11:02
Hasznos számodra ez a válasz?
 22/59 anonim ***** válasza:
86%

"És ha letárolod a következő elem pozícióját, az micsoda? Egy referencia. A referencia pedig egy speciális pointer."


Hát, pointerből véleményem és tanulmányaim szerint nincs speciális.

A polémia lényege, hogy egy álítás szerint láncolt listát csak pointerekkel lehet megvalósítani. Ez a kijelentés implicit tartalmazza azt a vélelmet, hogy láncolt listát olyan nyelven nem lehet implementálni, amely nem ismeri a pointer adattipust.

Ezt a tévedést cáfoltam én azzal, hogy pointer helyett attól különböző, tehát, mondjuk integer adattipussal is lehet láncolt listát létrehozni.


Egyébként ez része a hivatalos felsőoktatási tananyagnak is. Csak mivel azon nyelvek, amelyek nem ismerik a pointer fogalmát, kiveszőben vannak, így nem kerül a téma fókuszba.


[link]


Arra mindenesetre jó a tömbös példa, hogy azok az érdeklődők is megismerhessék a láncolt lista lényegét, fontosságát, gyakorlati jelentőségét, akik a pointerekkel egyelőre még hadilábon állnak.

2019. dec. 14. 11:39
Hasznos számodra ez a válasz?
 23/59 anonim ***** válasza:
89%

#24 "A polémia lényege, hogy egy álítás szerint láncolt listát csak pointerekkel lehet megvalósítani. Ez a kijelentés implicit tartalmazza azt a vélelmet, hogy láncolt listát olyan nyelven nem lehet implementálni, amely nem ismeri a pointer adattipust."


Egész pontosan:

- Egy ember említette, hogy pointerekkel ijesztgetik a hallgatókat ezért tűnik nehéznek a láncolt lista

- Egy ember emíltette, hogy jellemzően pointerekkel érdemes implementálni

- És egy ember kérdezte, hogy hogyan csinálsz láncolt listát pointerek nélkül


Állítást nem láttam, hogy nem tudsz pointerek nélkül láncolt listát készíteni, egészen amíg #16 elő nem állt, hogy "hát a Javaban nincs pointer, és láss csodát, lehet referenciákkal láncolt listát készíteni", mint aki a spanyol viaszt találta fel. Csakhogy a referencia és a pointer majdnem ugyanaz, működését tekintve a referencia ugyanazt csinálja, mint a pointer, csak jobban le van korlátozva. És a kalapom tenném rá, hogy aki korábban pointert említett, az általánosan hivatkozásra/mutatóra gondolt, amit teljesen mindegy, hogy egy konkrét nyelvben pointerrel, vagy referenciával valósítasz meg. Kellő abssztrakció felett ez egy érték, ami valaminek a címére mutat. Ilyen tekintetben a pointer és a referencia egy és ugyanaz. Ahogy az integer is ami egy tömb offset-jeit tárolja. Attól, hogy az adott nyelv kontextusában nem pointernek nevezzük, még effektíve ugyanazt a működést valósítja meg.


"Ezt a tévedést cáfoltam én azzal, hogy pointer helyett attól különböző, tehát, mondjuk integer adattipussal is lehet láncolt listát létrehozni."


Lényegtelen. A pointer is csak egy int érték alacsony szinten, a pointer léte csak annyit változtat, hogy egy memóriacímre mutat a tárolt értéke. Teljesen lényeg, hogy a konkrét implementációban mit használsz, pointert, referenciát, int értéket, memóriacímet, tömb indexet, vagy mást tárolsz. A lényeg, hogy mutatsz egy következő elemre valamilyen módon. Ezért is érzem azt, hogy aki a Java-s referenciás példáját írta, az nem igazán van tisztában azzal, hogy bordó helyett sötétvöröset írt, és azt hiszi feltalált egy új színt. Referencia vagy pointer, ebben a kontextusban egyenértékű a kettő.


A tömbös példa meg lehet, hogy tanulásnak jó, de azért szúrja a szemem, hogy a láncolt lista lényegi előnyét dobja ki az ablakon. Erre azért remélem felhívják a hallgatók figyelmét mikor mutogatják nekik.

2019. dec. 14. 12:55
Hasznos számodra ez a válasz?
 24/59 anonim ***** válasza:
77%

"Állítást nem láttam, hogy nem tudsz pointerek nélkül láncolt listát készíteni"


Ez alább már pedig az. Te írtad:


"Szóval igen, a láncolt lista továbbra is pointereken alapszik, ezen nem nagyon tudsz változtatni."



"de azért szúrja a szemem, hogy a láncolt lista lényegi előnyét dobja ki az ablakon."


Nem annyira, mert sok esetben semmi szükség a pointeres megvalósításból eredő sebességi hozadékra.

Például egy szövegszerkesztő implementálásánál sincs érdemi hozadéka a pointernek. Ahol meg a pointer végképp nem is létezik, ott más út nincs is.


"hogy a konkrét implementációban mit használsz, pointert, referenciát, int értéket, memóriacímet, tömb indexet, vagy mást tárolsz. A lényeg, hogy mutatsz egy következő elemre valamilyen módon."


Na, ezt állítottam eddig én is.

2019. dec. 14. 13:41
Hasznos számodra ez a válasz?
 25/59 anonim ***** válasza:
100%

"Ez alább már pedig az. Te írtad:"

És azt is írtam, hogy ebben a kontextusban a pointer, referencia, miegyéb egy és ugyanaz, nincs a jelen kontextusban releváns különbség. Tehát igen, amikor pointert mondok, azt értsd általánosan. A pointer mutatót jelent, és ez az a tulajdonság, ami releváns. Mutat valamire. Tehát pointer.


"Nem annyira, mert sok esetben semmi szükség a pointeres megvalósításból eredő sebességi hozadékra." Mit értesz sebességi hozadék alatt?

2019. dec. 14. 14:03
Hasznos számodra ez a válasz?
 26/59 anonim ***** válasza:
77%

A pointer sokkal gyorsabb. Próbálj meg egy képet tükrözni. Meg fogod látni.

De egy szövegszerkesztőnél ez a gyorsaság nem hoz előnyt, mert senki nem képes olyan gyorsan szveget manipulálni, hogy azt ne szolgálná ki a sima, tömbös megvalósítás is.

Vagy egy RR ütemezőnél, ahol limitálva van a processzek száma mondjuk 4-ben, hát ott ugyan gyorsabb a pointer, de annyira kevéssel, hogy említést sem érdemel. Utóbbinál is érdemesebb a pointeres megvalósításban gondolkodni, de egy példa rá, hogy hozadékát nem nagyon látjuk majd.

2019. dec. 14. 15:43
Hasznos számodra ez a válasz?
 27/59 anonim ***** válasza:
100%
#28 Csak arra nem válaszoltál, hogy mit értesz gyorsabb alatt. Akkor fogalmazok máshogy: Szerinted mi a láncolt lista előnye egy mezei tömbös szerkezettel szemben?
2019. dec. 14. 19:06
Hasznos számodra ez a válasz?
 28/59 anonim ***** válasza:
0%

"Szerinted mi a láncolt lista előnye egy mezei tömbös szerkezettel szemben?"


A mezei tömbös szerkezet IS láncolt lista, csak nem pointerrel van megoldva a láncolás.

2019. dec. 14. 19:13
Hasznos számodra ez a válasz?
 29/59 anonim ***** válasza:
100%
#30 De én most egy mezei tömbös szerkezetről beszélek, nem a tömbösen megoldott láncolt listáról. SZóval mi az előnye a láncolt listának a tömbös szerkezettel szemben?
2019. dec. 14. 19:58
Hasznos számodra ez a válasz?
 30/59 anonim ***** válasza:
10%

Nézd. Én eddig a láncolt lista pointeres és tömbös megvalósíthatóságáról beszéltem.


Fogalmam sincs, hogy te mit értesz "mezei tömbös szerkezeten" és azt sem tudom, hogy jön ez ide?

2019. dec. 15. 02:55
Hasznos számodra ez a válasz?
1 2 3 4 5 6

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!