Spojový seznam
Na cvičení byla představena datová struktura známá jako dvojsměrný spojový seznam. Jde o dynamickou struktutu, což znamená, že počet prvků, které si do seznamu uložíme není třeba předem znát.
Je možné prvky do/ze struktury přidávat/odebírat za běhu programu. Tyto operace jsou realizovány pomocí vhodného přepojení ukazatelů.

Existují i další varianty spojových seznamů např. jednosměrné nebo cyklické.
Pointery
Představili jsme si z teoretické i praktické stránky datový typ ukazatel/pointer. Několik základních věcí, které je dobré o pointerech vědět:
- + pointer je proměnná, která obsahuje adresu nějakého místa v paměti
- + pointery mohou mít udaný typ - podle typu pointeru překladač pozná, jak velké to místo v paměti je
- + pointer, který nikam neukazuje by měl mít hodnotu nil
- + při práci s pointry je třeba dávat pozor:
- * odkud data čteme
- * kam data zapisujeme
Byla probrána syntaxe pointerů, používaná v Pascalu (^,nil,@).
- 1. deklarace typu pointer: type Pint = ^integer;
- 2. deklarace proměnné typu pointer: var ui: Pint; (což je ekvivalentní s var ui: ^integer;)
- 3. inicializace prázdného pointeru: ui := nil;
- 4. inicializace pointeru adresou existující proměnné: ui := @i;
- 5. zápis přes pointer (na místo kam pointer ukazuje): (ui^) := 42;
- 6. čtení přes pointer (z místa kam pointer ukazuje): x := (ui^);
Na příkladu bylo prakticky demonstrováno, jak lze syntaxi použít, zneužít a jak snadno docílíme běhové chyby 216.
Na následujícím obrázku je zachycen pes, který je shodou okolností také pointr.
Kromě toho se cvičením nijak nesouvisí.
Práce s dynamicky alokovanou pamětí
Byl popsán způsob, jakým lze v Pascalu alokovat a odalokovat paměť:
- 1. deklarujeme proměnnou typu pointer (např. ui - viz. výše)
- 2. alokujeme paměť: New(ui); (procedura New uloží do pointeru adresu přidělené paměti)
- 3. pokud už přidělenou paměť nepotřebujeme, uvolníme ji: Dispose(ui);
Uspořádaný spojový seznam
V CodExu je zadán příklad na procvičení práce s pointery. Je ohodnocen 15 body.