Kezdőoldal » Számítástechnika » Programozás » Hogy írjak vermet és sort...

Hogy írjak vermet és sort C++-ban?

Figyelt kérdés
Nem is tudom előre, mekkora méretűek lehetnek, egyáltalán hogy kezdjek neki? Mi az a "FIFIO" meg "LAFO" (ezeket olvastam valahol).
2011. febr. 3. 14:09
 1/6 anonim ***** válasza:
Egyáltalán tudod mi az a verem?
2011. febr. 3. 14:39
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Elolvastam a wikipédiát, meg van egy jegyzetünk is (most néztem meg, az LIFO és FIFO akart lenni, bocsánat :(), szóval nagyjából igen.
2011. febr. 3. 15:43
 3/6 anonim ***** válasza:

Egyszeresen láncolt listát tudsz készíteni?

Azzal meg lehet oldani mindkettőt.

A LIFO azt jelenti, hogy "Last In, First Out", magyarul: az utolsó ami bement az jön ki először. Ezt úgy kell elképzelned, mint egy gödröt, amibe (a példa kedvéért) hullákat pakolsz. A gödör pont egy hulla méretű, így mindig csak a legfelsőt tudod kiszedni. Egyszerűen elkészíthető egy egyszeresen láncolt listával, ha az első elemtől indulsz, és mindig az elejére adod hozzá az elemeket. (persze ennél jobb megoldás egy tömb, de csak akkor használhatod, ha tudod előre, hogy maximum hány eleme lesz a veremnek.)


FIFO = First In, First Out = Első aki bejött, az megy ki először. Ez a klasszikus sor. Pont olyan, mint mikor rossz kaját osztogatnak egy fesztiválon, és mindenkire egyszerre jön rá a fosás, és sorban állnak a vécénél. Az első bemegy, a második viszont meg kell várja az elsőt, a harmadiknak pedig a másodikat, ezáltal persze az elsőt is. Itt az emberek (vagy adatok ha úgy tetszik) olyan sorrendben mennek ki a vécéből, mint ahogy a sorba beálltak.

Ez szintén megvalósítható egy egyszeresen láncolt listával, de egyszerűbb duplán láncolttal, először azzal próbáld. Egyszeresen láncolttal egy változóban az első és az utolsó elemet kell tárolnod (vagyis a címüket) és minden elem szomszédjának az előtte lévő címét. Igy mikor hozzáadsz, az első elé viheted, majd átírhatod az eleje változódat, mikor pedig kiveszel valamit a végéről egyszerűen csak elugrasztod a végét jelző változódat egyel (persze felszabaditod a memóriát is...).

Itt is gyorsabb egy tömb, de ehhez itt is szintén tudnod kell előre, hogy mekkora legyen...


Remélem ebből már meg tudod csinálni... :P

2011. febr. 3. 18:00
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

Használhatsz STL adatszerkezeteket is, kivéve ha ez valami házi feladat :)

verem: stack, sor: queue

Ha rákeresel, sok példát találhatsz rá.

2011. febr. 4. 22:40
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Húúú köszi :) Ez most jól jött, remélem elfogadják. Kicsit keresgéltem, és találtam egy trükköt


typedef std::stack<int> MyStack;


:D

Csak az a bajom, hogy így a pop metódusa nem adja vissza az értéket, ezzel lehet kezdeni valamit? A sor az tökéletes :)

2011. febr. 5. 09:18
 6/6 anonim ***** válasza:
A top() adja vissza a tetejét, a pop() csak töröl. :)
2011. febr. 6. 02:03
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!