Az informatikában a lista ( angol lista ) egy elvont adattípus , amely értékek rendezett halmaza , amelyben egy bizonyos érték többször is előfordulhat. A lista egy példánya a véges sorozat matematikai koncepciójának számítógépes megvalósítása . A listában szereplő értékek előfordulását a lista elemeinek nevezzük ( angol nyelvű elem, bejegyzés vagy elem ); ha az érték többször előfordul, minden előfordulás külön elemnek minősül.
A lista kifejezés több konkrét adatszerkezetre is utal, amelyeket az absztrakt listák, különösen a linkelt listák megvalósításában használnak .
C. Hoare szintaktikai orientált szerkesztési módszerének jelölésével a lista definíciója a következőképpen írható fel:
Ennek a definíciónak az első sora azt jelenti, hogy a típus elemeinek listája (mondjuk: "lista vége ") az üres lista és a típus atomjának Descartes szorzatának megkülönböztetett uniója a listával . Listák létrehozásához két konstruktort használnak (a definíció második sora), amelyek közül az első üres listát hoz létre, a második pedig egy nem üres listát. Teljesen világos, hogy a második konstruktor bemenetként kap valamilyen atomot és egy listát paraméterként, és egy listát ad vissza, melynek első eleme az eredeti atom, a többi pedig az eredeti lista elemei. Vagyis az atom a lista előtagjaként szerepel, ami az oka a konstruktor ilyen elnevezésének. Az üres lista nem atom, ezért nem lehet előtaggal ellátni. Másrészt az üres lista a null elem a listák összeállításához, így minden lista a legvégén tartalmaz egy üres listát - az építés ezzel kezdődik.
A harmadik sor a lista választóit határozza meg , vagyis a listán belüli elemek eléréséhez szükséges műveleteket. A kiválasztó bemenetként egy listát vesz, és ennek a lista első elemét adja vissza, vagyis az eredmény típusa type . Ez a választó nem fogadhat üres listát bemenetként - ebben az esetben a művelet eredménye nem definiálható. A szelektor a bemenetből kapott listát adja vissza a fej levágása (az első elem) eredményeként. Ez a választó szintén nem fogadhat be üres listát, mivel ebben az esetben a művelet eredménye nem definiálható. Ezzel a két művelettel bármely elemet lekérhet a listából. Például a lista harmadik elemének (ha van ilyen) lekéréséhez egymás után kétszer kell alkalmazni a választót , majd alkalmaznia kell a választót . Más szóval, ahhoz, hogy a listában a pozícióban lévő elemet megkapjuk (az első elemnél kezdődően , ahogy az a programozásban megszokott), egyszer alkalmazni kell a kiválasztót , majd alkalmazni kell a választót .
A definíció negyedik sora a lista predikátumokat írja le , vagyis azokat a függvényeket, amelyek bizonyos feltételektől függően logikai értéket adnak vissza. Az első predikátum értéket ad vissza, ha az adott lista üres. A második predikátum fordítva működik. Végül az ötödik sor a lista részeit írja le, amelyek, mint már említettük, az üres és nem üres listák.
Az így meghatározott adatszerkezetnek van néhány tulajdonsága:
A listák az azonos típusú elemkészletek tárolására szolgálnak. Az ilyen elemek a keresési funkciókhoz vagy az új elemek listába való gyors beszúrásához szükséges funkciókhoz rendezhetők.
A funkcionális nyelvek listája alapvető struktúra. A legtöbb funkcionális nyelv rendelkezik beépített lehetőségekkel a listákkal való munkavégzéshez, mint például a lista hosszának lekérése, a fej (a lista első eleme), a farok (a lista első elemét követő része), függvény alkalmazása a lista minden elemére ( Map ), a lista összehajtása stb.
Haskell nyelv A Lisp nyelvAdattípusok | |
---|---|
Értelmezhetetlen | |
Numerikus | |
Szöveg | |
Referencia | |
Összetett | |
absztrakt | |
Egyéb | |
Kapcsolódó témák |
Adatstruktúrák | |
---|---|
Listák | |
fák | |
Számít | |
Egyéb |