systÉmovÁ tŘÍda simset

12
Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam – velmi často používaná datová struktura Práce se spojovými seznamy Způsob práce se spojovým seznamem a konkrétní složitost obslužných algoritmů jsou závislé na použité organizaci seznamu. SYSTÉMOVÁ TŘÍDA SIMSET

Upload: ingrid

Post on 10-Jan-2016

52 views

Category:

Documents


1 download

DESCRIPTION

SYSTÉMOVÁ TŘÍDA SIMSET. Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy. KRUHOVÉ SPOJOVÉ SEZNAMY Spojový seznam – velmi často používaná datová struktura Práce se spojovými seznamy - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SYSTÉMOVÁ TŘÍDA   SIMSET

Třída SIMSET je druhou standardní systémovou třídou, která obsahuje prostředky pro práci se spojovými seznamy.

KRUHOVÉ SPOJOVÉ SEZNAMY

Spojový seznam – velmi často používaná datová struktura

Práce se spojovými seznamy

Způsob práce se spojovým seznamem a konkrétní složitost obslužných algoritmů jsou závislé na použité organizaci seznamu.

SYSTÉMOVÁ TŘÍDA SIMSET

Page 2: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Jednosměrný spojový seznam

Jedná se o nejjednodušší strukturu realizující spojový seznam. Každý prvek odkazuje na svého následníka a je zpřístupněn jednou referenční proměnnou, která odkazuje na první prvek.

Zpřístupňující proměnná

Odkaz na následující prvek seznamu

Obsah položky

Page 3: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Dvousměrný spojový seznam

Každý prvek odkazuje jak na svého předchůdce, tak na svého následníka a zpřístupnění je možné na jednom či druhém či obou koncích. Singulární případy při zařazování či ubírání na některém z konců seznamu.

Zpřístupňují proměnné

Odkaz na následující prvek seznamu

Obsah položky

Odkaz na předcházející prvek seznamu

Page 4: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Kruhový spojový seznam

Singulární případy lze zamezit kruhovou organizací seznamu,tj. první prvek prohlásíme definitoricky následníkem posledního prvku a poslední prvek předchůdcem prvního. Ke zpřístupnění „ obou konců“ kruhového seznamu stačí jediná referenční proměnná.

Zpřístupňující proměnná

Page 5: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Reprezentace prázdného seznamu

Zbývající singularita – práce s „ prázdným seznamem“, tj. zařazování prvního a vyjímání poslední prvku seznamu.

Odstranění – přidání speciálního prvku, který nebudeme počítat mezi prvky seznamu a který nebudeme nikdy ze seznamu vypouštět

Speciální prvek

Page 6: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Prázdný seznam v tomto pojetí bude reprezentován seznamem (stále kruhovým) obsahující pouze zmíněný speciální prvek.

Page 7: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Filozofie třídy SIMSET

Popsané pojetí cyklických kruhových seznamů obsahujících speciální prvek, který nebudeme počítat mezi vlastní členy seznamu budeme nazývat hlavou seznamu.

Základní datová struktura – stejná jak pro prvky seznamu tak pro jeho hlavu, tj. odpovídající datový prototyp musí obsahovat dvě složky pro referenční odkazy na následníka a předchůdce v seznamu.

Prefixační systém jazyka PC-SIMULA umožňuje, aby datové prototypy vlastních prvků seznamu a jeho hlavy byly kvalifikačně odlišné, tj. ke třídě základní datové struktury vytvoříme dvě podtřídy:

prototyp hlav seznamů

prototyp vlastních prvků seznamů

Page 8: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

V třídě SIMSET je takové kvalifikační odlišení realizováno.

• základní datový prototyp – třída linkage

o podtřída prototyp hlav seznamů – třída head

o podtřída prototyp vlastních prvků seznamu – třída link

linkage

head link

Page 9: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Deklarace systémové třídy SIMSET :

class Simset;

begin

class linkage

begin

ref (linkage) SUC, PRED;

….

end;

linkage class head; …;

linkage class link; …;

end ;

Page 10: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Deklarace třídy linkage:

- základní prototyp struktury řazené do kruhového dvousměrného seznamu

class linkage;

begin

ref(linkage) SUC, PRED;

ref(linkage) procedure suc;

suc:-if SUC in link then SUC else none;

ref(linkage) procedure pred;

pred:-if PRED in link then PRED else none;

ref(linkage) procedure prev;

prev:- PRED;

end ;

- identifikátory složené z velkých písmen označují uživateli nedostupné veličiny

Page 11: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Třída head:

- prototyp hlavy seznamu, nerozšiřuje třídu linkage

- z uživatelského hlediska je celý seznam reprezentován (zpřístupňován) právě hlavou.

Procedury:

• procedure first – funkční hodnotou je odkaz na první položku v seznamu, pro prázný seznam nabývá hodnoty none

• procedure last – odkazuje na poslední položku seznamu, pro prázný seznam nabývá hodnoty none

• procedure empty – nabývá hodnoty true při prázdném seznamu

• procedure cardinal – funkční hodnotou je celé číslo udávající počet položek seznamu

• procedure clear – odstraňuje všechny položky ze seznamu

Page 12: SYSTÉMOVÁ TŘÍDA   SIMSET

SIMULACE DISKRÉTNÍCH SYSTÉMŮ

Třída link:

- Prototyp exemplářů chápaných jako vlastní prvky spojového seznamu. Obsahuje pouze deklarace lokálních procedur – nerozšiřuje třídu linkage

- pouze kvalifikační odlišení vlastních prvků spojového seznamu od jeho hlavy – rozdíl jen v obslužných procedurách

Procedury:

• procedure out – odstraňuje položku ze seznamu

• procedure into(S) – zařazuje položku na konec seznamu

• procedure follow(X) – zařazuje položku do seznamu za objekt odkazovaný parametrem X

• procedure precede(X) – zařazuje položku do seznamu před objekt odkazovaný parametrem X