Simula, jakožto objektově orientovaný programovací jazyk, nabízí i několik standardních tříd. Jsou to vesměs hlavní třídy. Jedna z nich je třída SIMSET a je zaměřena na zpracování seznamů. A tak uživatel Simuly může ty úseky svých programů, v nichž pracuje se seznamy, formulovat jako bloky prefixované třídou SIMSET Třída SIMSET obsahuje dvě důležité vnořené třídy, link a head. Třída link reprezentuje pojem prvku, který může vstupovat do seznamů a třída head reprezentuje pojem seznamu. Nechť S je instance třídy head a x a y jsou instance třídy link (v praxi obvykle její nějaké podtřídy). Nad těmito dvěmi třídami je ještě třída linkage, která reprezentuje znalost obousměrného spojování a head a link jsou její specializací.
Pak lze používat tyto zprávy:
- x.into(S) – x vstoupí do seznamu S na jeho poslední místo [x do S],
- x.precede(y) – x vstoupí do toho seznamu, v němž je y, a to jako předchůdce y [x předejdi y],
- x.follow(y) – x vstoupí do toho seznamu, v němž je y, a to jako nasledovník y [x následuj y],
- x.out – x opustí seznam, v němž dosud bylo [x ven],
- x.pred – předchůdce prvku x [x-ův předchůdce, pred je zkratka slova predecessor, tj. předchůdce],
- x.suc – nasledovník prvku x [x-ův nasledovník, suc je zkratka slova successor, tj. nasledovník],
- S.first – první prvek seznamu S [S-ův první],
- S.last – poslední prvek seznamu S [S-ův poslední],
- S.cardinal – počet prvků seznamu S [S-ova kardinalita, tj. počet prvků],
- S.empty – test na to, zda je seznam S prazdný [S prázdné],
- S.clear – vyprázdnění seznamu S [S vyčisti].
Př.:
Ref(head)osoby; ref(link)clovek,aux;
Osoby:-new head;
Clovek:-new link;
Clovek.into(osoby);
Aux:-osoby.first;
Rozlišujeme dva druhy lineárních spojových seznamů:
- Jednosměrné spojové seznamy – jsou zpravidla zpřístupněny jedinou referenční proměnnou, která ukazuje na první prvek seznamu. Každý další prvek pak ukazuje na svého následovníka. Takovéto seznamy se používají pro konstrukci zásobníku (LIFO) a fronty (FIFO).
- Dvousměrné spojové seznamy – pokud potřebujeme zařazovat prvky i doprostřed seznamu, nejen na začátek či konec. Každý prvek ukazuje na svého předchůdce i následovníka.
SIMULA využívá cyklických dvoucestných seznamů (kruhové obousměrné seznamy). Prvky takového seznamu jsou libovolně umístěny v paměti počítače, při čemž každý z nich má reference na svého předchůdce a svého následovníka v seznamu a první a poslední prvek mají nadto referenci na sám seznam (či, jak se běžně říká, na záhlaví seznamu):

Prázdný seznam pak můžeme znázornit následovně:

2013 ©