Abstraktní datový typ SEZNAM (LIST.PAS)
Zpět na "PASCAL V PŘÍKLADECH"

Sémantická specifikace ATD Seznam
Implementace jednotlivých operací


Sémantická specifikace ATD seznam

Začátek
Implementace jednotlivých operací

LISTINIT = < > vytvoří prázdný seznam Nad prázdným seznamem nezpůsobí žádnou změnu; nad neprázdným seznamem způsobí, že aktivním začne být první prvek bez ohledu na to, zda seznam byl aktivní a když ano, který prvek byl aktivní.
FIRST (< >) = < >                       FIRST (< A >) = < A >           FIRST (< A >) = < A >
FIRST (< ABL >) = < ABL >               FIRST (< AL >) = < AL >	        FIRST (< AL >) = < AL >
FIRST (< AL1BL2 >) = < AL1BL2 >         FIRST (< ALB >) = < ALB >
Nad neaktivním seznamem nezpůsobí žádnou změnu, je-li aktivním prvkem poslední (resp. jediný) prvek seznamu, vznikne neaktivní seznam týchž prvků, v jiném případě se aktivita přenese na následující prvek.
SUCC (< >) = < >                        SUCC (< A >) = < A >		SUCC (< L >) = < L >
SUCC (< ABL >) = < ABL >  		SUCC (< LAB >) = < LAB >	SUCC (< LA >) = < LA >
SUCC (< L1ABL2 >) = < L1ABL2 >
Nad neaktivním seznamem nebo seznamem, jehož poslední prvek je aktivní, nezpůsobí žádnou změnu. V aktivním seznamu se vypustí prvek za aktivním prvkem.
POSTDELETE (< >) = < >		        POSTDELETE (< L >) = < L >
POSTDELETE (< A >) = < A >              POSTDELETE (< AB >) = < A >
POSTDELETE (< L1ABL2 >) = < L1AL2 >     POSTDELETE (< LAB >) = < LA >
POSTDELETE (< LA >) = < LA >
Nad neaktivním seznamem nezpůsobí žádnou změnu; v aktivním seznamu změní hodnotu aktivního prvku dosazením hodnoty nového prvku.
ACTUALIZE (A,< >) = < > 	        ACTUALIZE (A,< L >) = < L >
ACTUALIZE (A,< B >) = < A >             ACTUALIZE (A,< BL >) = < AL >
ACTUALIZE (A,< L1BL2 >) = < L1AL2 > 	ACTUALIZE (A,< LB >) = < LA >
Nad prázdným seznamem nezpůsobí změnu, z neprázdného seznamu vypustí první (resp. jediný) prvek bez ohledu na aktivnost seznamu. Byl-li první prvek aktivní, je výsledný seznam neaktivní.
DELETEFIRST (< >) = < > 		DELETEFIRST (< A >) = < >
DELETEFIRST (< A >) = < >               DELETEFIRST (< AL >) = < L >
DELETEFIRST (< AL >) = < L >
Error v prvních dvou případech - není definován nad neaktivním seznamem. Nad aktivním seznamem je výsledek hodnota aktivního prvku. Operace nezpůsobí žádnou změnu v seznamu.
COPY (< >) = error		COPY (< L >) = error
COPY (< A >) = A		COPY (< AL >) = A
COPY (< L1AL2 >) = A 		COPY (< LA >) = A
Nad neaktivním seznamem nezpůsobí žádnou změnu; do aktivního seznamu vloží nový prvek za aktivní prvek.
POSTINSERT (A,< >) = < >		POSTINSERT (A,< L >) = < L >
POSTINSERT (A,< BL >) = < BAL >		POSTINSERT (A,< L1BL2 >) = < L1BAL2 >
POSTINSERT (A,< LB >) = < LBA >		POSTINSERT (A,< B >) = < BA >
Vloží do seznamu nový prvek na jeho začátek, aniž se změní aktivnost seznamu.
INSERTFIRST (A,< >) = < A >		INSERTFIRST (A,< L >) = < AL >
INSERTFIRST (A,< BL >) = < ABL >	INSERTFIRST (A,< L1BL2 >) = < AL1BL2 >
INSERTFIRST (A,< LB >) = < ALB > 	INSERTFIRST (A,< B >) = < AB >
Pokud seznam není prázdný, výsledkem je hodnota prvního prvku seznamu.
 COPYFIRST (< >) = error	COPYFIRST (< A >) = A 	 	COPYFIRST (< A >) = A
 COPYFIRST (< AL >) = A	 	COPYFIRST (< AL >) = A
Je predikát aktivnosti seznamu.

ACTIVE (< >) = false		ACTIVE (< L >) = false
ACTIVE (< A >) = true		ACTIVE (< AL >) = true
ACTIVE (< L1AL2 >) = true	ACTIVE (< LA >) = true

Implementace jednotlivých operací nad ATD seznam

Začátek
Sémantická specifikace ATD Seznam

Zpět na "PASCAL V PŘÍKLADECH"


Domovská stránka
Kontakt
Stanislav Chromčák
11. 2. 2000
Originální umístění této stránky je:
http://freeweb.coco.cz/ANCHOR/pascal/data/seznam.htm