Kezdőoldal » Számítástechnika » Programozás » Mire jók a listák? Tudnátok...

Mire jók a listák? Tudnátok gyakorlati alkalmazásukra példát mondani? Használják programokban?

Figyelt kérdés

2013. máj. 2. 22:07
 1/9 anonim ***** válasza:
Még szép, hogy használják. Lenyitsz egy menüt és szinte biztos, hogy a menüpontok valahol a program mélyén egy listában tárolódnak.
2013. máj. 2. 22:13
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Van egy rakás kiskutya, amiknek az adataival kell foglalkozz, de nem tudod pontosan mennyi ilyen kutya van, mert egy szöveges fájlban van elmentve az egész, ráadásul folyamatosan változik. Tömböt nem hozhatsz létre, mert nem tudod mekkora kellene, így a legértelmesebb egy listát használni.
2013. máj. 3. 07:24
Hasznos számodra ez a válasz?
 3/9 iostream ***** válasza:
Mit értesz lista alatt?
2013. máj. 3. 09:32
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

A lista (vagy egyszerű lista) egy a tömbhöz hasonló elemi adatszerkezet, adatelemek - egy adott szempont szerint - rendezett formában történő tárolására. Ugyanakkor a lista - szemben a tömbbel - az elemeket magukat nem, csak a rájuk mutató hivatkozásokat (pointer) gyűjti és tárolja szekvenciálisan, míg a magát a listát alkotó elemek a memóriában tetszőleges szétszórva helyezkedhetnek el. A lista ugyanebből kifolyólag - és szintén szembben a tömbbel - nem csak azonos, de eltérő típusú elemek tárolására is alkalmas, amelyek mindegyike a listában elfoglalt pozíciója alapján címezhető meg, indexén keresztül.


Technikailag a listát tipikusan egy tömb segítségével valósítják meg, amelyet a lista által befoglalt elemekre hivatkozó mutatók (pointerek) tárolására használnak fel. A lista tényleges elemeinek elérése ezen mutatók feloldásán keresztül lehetséges. A lista ebből adódóan ugyanazt az egy adatelemet többször is tartalmazhatja, hiszen több index alatt is tárolható hivatkozás ugyanarra az elemre. Az ilyen adatelemen tetszőleges index alatt végrehajtott változásokat minden más index amelyen az adott elem elérhető azonnal tükrözni fogja, hiszen végső soron a memória ugyanazon területére hivatkoznak. Ugyanezen okból kifolyólag lehetőség van ugyanazon adatelemek több különböző listában történő szerepeltetésére is, amelyekben sorrendjeik eltérhetnek, így lehetőséget adva különböző rendezési elv mentén történő sorbaállításukra redundáns kópiák létrehozása és tárolása nélkül is.


A listákban a néhány bájtot meghaladó elemek effektívebben rendezhetők, mint a tömbben, hiszen elegendő csak az elemekre hivatkozó mutatókat mozgatni, maguk az elemek adattartalmának mozgatására a memóriában azonban nincs szükség. Ugyanakkor az elemek véletlenszerű beszúrása vagy törlése nagy elemszám esetén csak jóval lassabban hajtható végre, mint a láncolt listák esetében, hiszen továbbra is jelentős mennyiségű mutatóelem mozgatása vagy másolása szükséges a listán belül, ha csak nem mindig a lista végére/ről kerülnek az elemek beszúrásra/törlésre.

2013. máj. 3. 11:20
 5/9 iostream ***** válasza:

No, ezt értve a lista alatt, nyelvfüggő. A referencia alapú nyelvekben csak ilyen lista van, adatot érték szerint tároló nincs is. Egyébként meg akkor van értelme, ha nem akarod másolgatni az elemeket, ezért csak a címüket tárolod.


Amúgy az egy népszerű tévképzet, hogy a rendezés gyorsabb ilyenen, a beszúrás meg láncolt listán. Ki kell mérni, gyakran az érték szerint tárolt lista (C++ vector) mindenben gyorsabb, mint akármelyik másik STL adatszerkezet, a dereferálás hiánya és a kevesebb cache miss miatt. Ilyen ez az optimalizálás: mérni kell, nem hasraütni :)

2013. máj. 3. 11:47
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
De ugyanezt meg lehet oldani vektoroknál pointerekkel is, hogy ne az értéket csak a címeket mozgasd, nem?
2013. máj. 3. 11:53
 7/9 iostream ***** válasza:
Ez pontosan az. Ez a lista definíció, amit te bemásoltál, nem tudom honnan van, de a C++-ba nincs leképezve. A vector pointerekkel lefedi, de ennek nincs külön neve. Illetve nem teszi lehetővé, hogy értelmeseb BÁRMIT belepakolj, void*-okkal persze bármi belemegy, csak később nem fogod tudni, mi az.
2013. máj. 3. 12:08
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Valahogy a listákat túlmisztifikáltnak és elbonyolítottnak találom. :D
2013. máj. 3. 12:11
 9/9 anonim ***** válasza:

[link]

[link]


Sztem nincs bennük semmi olyan, ami túl bonyolult lenne.

2013. máj. 3. 23:29
Hasznos számodra ez a válasz?

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!