Bevezetés
adatstruktúrák rendszerezik a számítógépekben való tárolást, így hatékonyan tudjuk elérni és megváltoztatni az adatokat. A halmok és a sorok a számítástechnikában meghatározott legkorábbi adatstruktúrák.
egyszerű megtanulni és könnyen megvalósítható, ezek használata gyakori, és akkor valószínűleg találja magát beépíti őket a szoftver különböző feladatokat.
gyakori, hogy a halmok és sorok tömbbel vagy kapcsolt listával kerülnek végrehajtásra. A List
adatstruktúrára támaszkodunk, hogy mind a halom, mind a sorok elhelyezhetők legyenek.
hogyan működnek?
Stack
Stack, mint a neve is sugallja, kövesse a Last-in-First-Out (LIFO) elvet. Mintha az érméket egymásra raknánk, az utolsó érme, amelyet a tetejére helyezünk, az az, amelyet később először távolítunk el a kötegből.
egy köteg végrehajtásához tehát két egyszerű műveletre van szükségünk:
-
push
– elemet ad a verem tetejére:
-
pop
– eltávolítja az elemet a verem tetején:
or
sorok, mint a neve is sugallja, kövesse az első-in-first-out (FIFO) elvet. Mintha sorban állnánk a mozijegyekért, az első, aki sorban áll, az az első, aki jegyet vesz, és élvezi a filmet.
a sor végrehajtásához tehát két egyszerű műveletre van szükségünk:
-
enqueue
– elemet ad a sor végéhez:
-
dequeue
– eltávolítja az elemet elején a sorban:
halomban Sorok segítségével Listák
Python beépített List
adatok struktúra jön köteg-val módszerek, hogy szimulálja mindkét verem, majd sorban műveletek.
Vegyünk egy köteg betűt:
ugyanazokat a funkciókat használhatjuk egy sor végrehajtásához. A pop
függvény opcionálisan veszi az elem indexét, amelyet argumentumként szeretnénk letölteni.
így tudjuk használnipop
az első index a lista, azaz0
, hogy sorban-szerű viselkedés.
fontolja meg a gyümölcsök “sorát”:
ismét, itt használjuk aappend
éspop
a lista műveleteit a sor alapvető műveleteinek szimulálására.
halomban Sorok a történne meg a Könyvtár
a Python egy deque
(ejtsd: ‘deck’) könyvtár, amely egy sorozat hatékony módszerekkel dolgozni, mint egy halom, vagy egy sorban.
deque
a kettős végű sor rövidítése – egy általánosított sor, amely az első vagy utolsó tárolt elemet kaphatja meg:
Ha többet szeretne megtudni a deque
könyvtár és más típusú gyűjtemények a Python biztosítja, elolvashatja a bevezetés a Python gyűjtemények modul cikk.
Szigorúbb Implementációk Python
Ha a kód szükséges a halmot, majd ad egy List
, semmi akadálya, hogy egy programozó hívja insert
remove
vagy más lista funkciók, amelyek befolyásolják a megbízás a stack! Ez alapvetően tönkreteszi a verem meghatározásának pontját, mivel már nem úgy működik, ahogy kellene.
vannak esetek, amikor szeretnénk biztosítani, hogy csak érvényes műveleteket lehet végrehajtani az adatainkon.
olyan osztályokat hozhatunk létre, amelyek csak az egyes adatszerkezetekhez szükséges módszereket teszik ki.
ehhez hozzunk létre egy új fájlt, melynek neve stack_queue.py
és definiáljunk két osztályt:
a programozók aStack
és Queue
most arra ösztönözzük őket,hogy az adatok manipulálására szolgáló módszereket használják.
példák
Képzeld el, hogy egy fejlesztő dolgozik egy teljesen új szövegszerkesztő. A feladatod egy visszavonási funkció létrehozása-amely lehetővé teszi a felhasználók számára, hogy a munkamenet kezdetéig visszavonják tevékenységeiket.
a verem ideális erre a forgatókönyvre. Minden olyan műveletet rögzíthetünk, amelyet a felhasználó a verembe nyomva végez. Amikor a felhasználó meg akarja semmisíteni egy műveletet, akkor a veremből pop. Gyorsan szimulálhatjuk a funkciót, mint ez:
A sorok széles körben használják a programozást is. Gondolj olyan játékokra, mint a Street Fighter vagy a Super Smash Brothers. A játékosok ezekben a játékokban speciális mozdulatokat hajthatnak végre a gombok kombinációjának megnyomásával. Ezek a gombkombinációk egy sorban tárolhatók.
most képzeljük el, hogy te egy fejlesztő dolgozik egy új harci játék. A játékban minden alkalommal, amikor egy gombot megnyomnak, egy bemeneti esemény ki van kapcsolva. A tesztelő észrevette, hogy ha a gombokat túl gyorsan nyomják meg, a játék csak az elsőt dolgozza fel, a speciális mozdulatok nem fognak működni!
ezt egy sorral rögzítheti. Minden bemeneti esemény után érdeklődhetünk. Így nem számít, ha a bemeneti események kevés időt töltenek közöttük, akkor mind tárolásra kerülnek, feldolgozásra rendelkezésre állnak. Amikor feldolgozzuk a mozdulatokat, le tudjuk állítani őket. Egy speciális lépés lehet kidolgozni, mint ez:
következtetés
Stacks and queues are simple data structures that allow us to store and retrieve data sequently. Egy kötegben az utolsó elem, amelybe belépünk, az első, aki kijön. Egy sorban az első elem, amelybe belépünk, az első jön ki.
apush
művelet és elemek lekérése apop
művelet segítségével. A sorokkal a enqueue
művelet segítségével adunk hozzá elemeket a dequeue
művelet segítségével.
Python-ban csak a beépített List
adatstruktúra használatával valósíthatjuk meg a halmokat és a sorokat. A Python rendelkezik adeque
könyvtárral is, amely hatékonyan képes egy objektum verem-és sorműveleteit biztosítani. Végül elkészítettük a verem-és sorosztályokat, hogy jobban ellenőrizhessük az adatainkat.
sok valós felhasználási eset van a halmokhoz és a sorokhoz, ezek megértése lehetővé teszi számunkra, hogy sok adattárolási problémát egyszerű és hatékony módon oldjunk meg.