ADT/ADS = abstraktní datové typy / struktury

Podobné dokumenty
Reprezentace dat v informačních systémech. Jaroslav Šmarda

Algoritmizace prostorových úloh

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Algoritmizace prostorových úloh

7. Datové typy v Javě

Datové typy a struktury

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Konstruktory a destruktory

Algoritmizace a programování

Abstraktní datové typy: zásobník

Základní datové struktury

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové struktury. alg12 1

Zápis programu v jazyce C#

Ing. Igor Kopetschke TUL, NTI

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Lineární datové struktury

Úvod do programovacích jazyků (Java)

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

Algoritmy a datové struktury

Kolekce, cyklus foreach

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Elementární datové typy

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Úvod do programovacích jazyků (Java)

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Opakování programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++ 2, 4. cvičení

Programování v Javě I. Leden 2008

8 Třídy, objekty, metody, předávání argumentů metod

Datové typy a jejich reprezentace v počítači.

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Programování v Javě I. Únor 2009

Dynamické datové struktury I.

Abstraktní datové typy

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Programování v C++, 2. cvičení

5 Přehled operátorů, příkazy, přetypování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Seminář Java II p.1/43

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Tato tematika je zpracována v Záznamy přednášek: str materiál: PrikladyZobrazeniCisel.pdf

Lineární datové struktury

Výčtový typ strana 67

Šablony, kontejnery a iterátory

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Šablony, kontejnery a iterátory

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

PA152. Implementace databázových systémů

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Paměť počítače. alg2 1

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

Programování v C++ 1, 1. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Spojové struktury. Spojová struktura (linked structure):

IRAE 07/08 Přednáška č. 7. Začátek (head)

Teoretické minimum z PJV

Generické programování

Informatika Datové formáty

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

PREPROCESOR POKRAČOVÁNÍ

Spojová implementace lineárních datových struktur

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

Výrazy, operace, příkazy

Sada 1 - PHP. 03. Proměnné, konstanty

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Číselné soustavy. Binární číselná soustava

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Část I Spojové struktury

Jazyk C# a platforma.net

Spojové struktury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 10 A0B36PR1 Programování 1

Da D to t v o é v ty t py IB111: Datové typy

Dynamické datové typy a struktury

typová konverze typová inference

Základy programování (IZP)

Jazyk C++ I. Šablony

Datové typy strana 29

Programování v C++ 2, 8. cvičení

IUJCE 07/08 Přednáška č. 6

Programování v C++ 2, 7. cvičení

Sada 1 - Základy programování

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Odvozené a strukturované typy dat

Transkript:

DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní datové typy / struktury poprvé představen 1974, veřejnosti až 1977 implementačně nezávislá struktura dat s operacemi na této struktuře určen: množství alokované paměti + druh dat paměť (B) dáno programovacím jazykem a typem PC» Java (pevná velikost), C, C++ (dle velikosti registru ½, 1, 2) druh dat způsob manipulace s daty (DT)» celé číslo, řetězec znaků, měna, desetinné číslo, 1

podle historického vývoje IT klasické DT jednoduché DT složené DT zvláštní DT klasické ADT základní ZDT uživatelské UDT prostředí.net hodnotový DT referenční DT klasické DT jednoduché DT ordinální (ex. předchůdce a následník)» log.hodnota (boolean), c.číslo (integer), znak (char), výč.typ (enum) neordinální (číslo s plovoucí čárkou)» reálné číslo (real, float, double) prázdný» void, null, nill složené DT homogenní» pole, textový řetězec nehomogenní» seznamy, struktury, záznamy, třídy zvláštní DT» ukazatel (*pt), soubor (file),... 2

klasické ADT/ADS ZDT = základní, primitivní, vestavěné (built in) definované programovacím jazykem celočíselné, s plovoucí desetinnou čárkou, znakové, logická hodnota» Java: byte, short, int, long, float, double, char, String, boolean» C#: s byte, u short, u int, u long, float, double, decimal, char, string, bool, object UDT = uživatelsky definované definované programátorem seskupení primitivních ZDT pole, textový řetězec, fronta, seznam, zásobník, strom,...» Java: pole array, třída class, výčtový typ enum, rozhraní interface» C#: pole array, třída class, výčtový typ enum, struktura struct, v prostředí.net předek třídy System.Object hodnotový datový typ vytváření dynamicky (složka třídy) nebo v zásobníku (lokální proměnná metody) Primitivní (atomické) datové typy celá čísla (byte, short, int, long), znaky (char), reálná čísla (float, double), logické hodnoty (bool), prázdný typ (void, null), výčtový typ, struktura referenční (odkazový) datový typ vytváření pouze dynamicky odkazování reference rušení automatická správa paměti řetězce (String), pole ([]), třídy (class), 3

celá čísla uložení: znaménko + bin.číslo byte (1B) 0 až 255 / 128 až +127 short (2B) 0 až 65 535 / 32 768 až +32 767 int (4B, 6B) bez znaménka / se znaménkem unsigned / signed záporná čísla doplňkový kód např. 10000001 0 až 4 294 967 295 / 2 147 483 648 až +2 147 483 647 long (8B) 0 až 18 446 744 073 709 551 615 / 9 223 372 036 854 775 808 až +9 223 372 036 854 775 807 Java : byte, short, int, long signed C# : sbyte, byte, short, ushort, int, uint, long, ulong reálné číslo reálné číslo = mantisa * 2 exponent mantisa v normalizovaném tvaru (1,23456789) uložení: znaménko + mantisa + exponent (= pohyblivá čárka) velikost mantisy = max. počet platných cifer velikost exponentu = rozsah zobrazovaných hodnot real / float (4B) s jednoduchou přesností (3B mantisa + 1B exponent) ±1.5 x 10 45 až ± 3.4 x 10 38 přesnost na 7 8 cifer za desetinnou čárkou double (8B) s dvojitou přesností (6B mantisa + 2B exponent) ±5.0 x 10 324 až ± 1.7 x 10 308 přesnost na 15 16 cifer za desetinnou čárkou 4

celočíselná hodnota znakové sady znaková sada (kódová stránka) + kódování ASCII (1B) 256/128 znaků (1 způsob kódování) kódování EBCDIC (souběžně s ASCII, pro sálové počíteče) kódové stránky národních abeced latin 1, latin 2, Kamenických, Win1250 Unicode (1B,2B,4B) 1 114 112 znaků (17*65536)» standardy UCS (až 32b) + Unicode (až 16b) 1991 kódování UTF 7 (7b, znaková sada ASCII) kódování UTF 8 (8 32b, ISO 8859 1, Internet + OS GNU/Linux) kódování UCS 2 (16b), UTF 16 (16 32b, LE, BE, OS Windows) kódování UCS 4, UTF 32 (32b, LE, BE, neefektivní)» endianita = ukládání vícebajtových DT (0x4A3B2C1D), LE, BE, ME char (2B) lze použít jako celočíselný typ bez znaménka (ushort) boolean (1bit) 1 / 0 true / false pravda / nepravda uložen často jako 1B existují i další ZDT různé pro různé programovací jazyky Java : string C# : decimal, void, list, 5

proměnná = odkaz na paměťové místo na paměťovém místě najdeme hodnotu proměnné název = ukazatel na 1.bajt datový_typ = velikost paměťového místa (1B, 2B, 4B, ) obsah deklarace: datový_typ název_proměnné ; short obsah; definice: název_proměnné = hodnota ; obsah = 15; ukazatel = odkaz na paměťovou adresu na paměťové adrese najdeme adresu jiné proměnné velikost adresy v pamě rychlejší práce pro velké datové struktury lze použít jako prvek struktury, atribut třídy adresový operátor & pro získání adresy proměnné operátor * pro práci s hodnotou proměnné v místě adresy obsah ptobsah deklarace: datový_typ * název_ukazatele ; short *ptobsah; definice: název_ukazatele = & proměnná ; ptobsah = &obsah; 6

pole = odkaz na řadu homogenních paměťových míst prvek pole = jedno paměťové místo určen indexem [i] umístěny v paměti vedle sebe stejného datového typu statické pole (při překladu musí být známa fixní velikost pole) dynamické pole (při běhu programu se může měnit velikost pole) obsah[0] obsah[1] obsah[2] obsah[3] deklarace: datový_typ[] název_pole [počet_prvků] ; short obsah[4]; short[] objem = new short[pocet]; definice: název_pole[prvek] = hodnota ; obsah[1] = 15; objem[3] = 7; struktura = odkaz na seskupení heterogenních paměťových míst prvek struktury = jedno paměťové místo různého datového typu umístěny v paměti vedle sebe určen instancí a operátorem. ABCD.obsah ABCD.nazev[0] ABCD.nazev[1] hodnotový typ ADS PQRS.obsah deklarace: struct název_str { typ prvek; } prom ; struct ctverec{ short obsah; char nazev[2]; } ABCD, PQRS; definice: název_prom. prvek = hodnota ; ABCD.obsah = 15; ABCD.nazev = "PX"; 7

třída = odkaz na seskupení heterogenních paměťových míst prvek třídy = jedno paměťové místo různého datového typu umístěny v paměti vedle sebe určen instancí a operátorem new ABCD.obsah ABCD.nazev[0] ABCD.nazev[1] referenční typ ADS PQRS.obsah deklarace: class název_tr { typ prvek; metody } ; class ctverec{ short obsah; char nazev[2]; Constr() }; definice: název_tr prom = new Constr() ; ctverec ABCD = new Constr(15,"PX"); ctverec PQRS = new Constr(); zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) součást skoro každého programu zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] vrchol = 1 int velikost = 4; int Zasobnik[velikost]; int vrchol = 1; public class Stack { object[] items; int count; public void Push(object item) {...} public object Pop() {...} } Stack zasobnik = new Stack(); 8

zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vložení hodnoty 24 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 vrchol = vrchol + 1; Zasobnik[vrchol] = 24; vrchol = 0 zasobnik.push(24); zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vložení hodnoty 59 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 vrchol = vrchol + 1; Zasobnik[vrchol] = 59; vrchol = 1 zasobnik.push(59); 9

zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vložení hodnoty 11 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 11 vrchol = vrchol + 1; Zasobnik[vrchol] = 11; vrchol = 2 zasobnik.push(11); zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vložení hodnoty 37 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 11 37 vrchol = vrchol + 1; Zasobnik[vrchol] = 37; zasobnik.push(37); vrchol = 3 10

zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vyjmutí hodnoty 37 ze Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 11 37 pom = Zasobnik[vrchol]; vrchol = vrchol 1; vrchol = 2 int pom = (int) zasobnik.pop(); zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vyjmutí hodnoty 11 ze Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 11 37 pom = Zasobnik[vrchol]; vrchol = vrchol 1; vrchol = 1 int pom = (int) zasobnik.pop(); 11

zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vyjmutí hodnoty 59 ze Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 59 11 37 pom = Zasobnik[vrchol]; vrchol = vrchol 1; vrchol = 0 int pom = (int) zasobnik.pop(); zásobník = způsob seskupení paměťových míst metoda LIFO (last in, first out) Vložení hodnoty 31 do Zásobníku zasobnik[0] zasobnik[1] zasobnik[2] zasobnik[3] 24 31 11 37 vrchol = vrchol + 1; Zasobnik[vrchol] = 31; vrchol = 1 zasobnik.push(31); 12

používané metody / funkce: je zásobník plný? ano, pokud 1 ne, pokud 1 je zásobník prázdný? ano, pokud 1 ne, pokud 0 vlož (push) hodnotu do zásobníku. otestuj, zda již není plný vyjmi (pop) hodnotu ze zásobníku. otestuj, zda již není prázdný fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická fronta[0] fronta[1] fronta[2] fronta[3] int velikost = 4; int Fronta[velikost]; int = 0; int konec = 0; = 0 konec = 0 public class Queue { object[] items; int start, stop; public void Push(object item) {...} public object Pop() {...} } Queue fronta = new Queue(); 13

fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vložení hodnoty 24 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 = 0 Fronta[konec] = 24; konec = (konec + 1) % velikost; konec = 1 fronta.push(24); fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vložení hodnoty 59 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 59 = 0 Fronta[konec] = 59; konec = (konec + 1) % velikost; konec = 2 fronta.push(59); 14

fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vložení hodnoty 11 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 59 11 = 0 Fronta[konec] = 11; konec = (konec + 1) % velikost; fronta.push(11); konec = 3 fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vyjmutí hodnoty 24 z Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 59 11 pom = Fronta[]; = ( + 1) % velikost; = 1 konec = 3 int pom = (int) fronta.pop(); 15

fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vyjmutí hodnoty 59 z Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 59 11 pom = Fronta[]; = ( + 1) % velikost; = 2 konec = 3 int pom = (int) fronta.pop(); fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vložení hodnoty 31 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] 24 59 11 31 konec = 0 Fronta[konec] = 31; konec = (konec + 1) % velikost; = 2 fronta.push(31); 16

fronta = způsob seskupení paměťových míst metoda FIFO (first in, first out) cyklická Vložení hodnoty 47 do Fronty fronta[0] fronta[1] fronta[2] fronta[3] 47 59 11 31 Fronta[konec] = 47; konec = (konec + 1) % velikost; konec = 1 = 2 fronta.push(47); používané metody / funkce: je fronta plná? ano, pokud 1 % ne, pokud 1 % je fronta prázdná? ano, pokud ne, pokud vlož (push) hodnotu do fronty. otestuj, zda již není plná vyjmi (pop) hodnotu z fronty. otestuj, zda již není prázdná 17

lineární spojový seznam, zřetězený seznam (list) dynamická datová struktura» dynamická alokace paměti, tvorba struktur pole, stromy, grafy náročnější na čas, paměť a zkušenost programátora prvek» přístup k prvkům složitější (nelze indexy) jednosměrný data + odkaz na další prvek jednodušší, horší procházení obousměrný (dvoucestný, dvousměrný) data + odkaz na předchozí a další prvek složitější, procházení oběma směry data data prvek predchozi jednosměrný data + odkaz na další prvek jednodušší, horší procházení vkládání prvků na začátek na konec na pozici v seznamu prvek data jednosměrně zřetězený seznam class Prvek{ private int data; private Prvek ; public Prvek(int d) { NastavData(d); = null; } public int VratData() {} public void NastavData(int d) {} }; 18

jednosměrný, vkládání na začátek seznamu Vložení hodnoty 24 do Seznamu 24 null = new Prvek(24); jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu 24 null 59 null = new Prvek(59); 19

jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu 24 null 59 adr.24. = ; jednosměrný, vkládání na začátek seznamu Vložení hodnoty 59 do Seznamu 24 null 59 adr.24 = ; 20

jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu 24 null 11 null 59 adr.24 = new Prvek(11); jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu 24 null 11 adr.59 59 adr.24. = ; 21

jednosměrný, vkládání na začátek seznamu Vložení hodnoty 11 do Seznamu 24 null 11 adr.59 59 adr.24 = ; jednosměrný, vkládání na začátek seznamu Seznam 11 59 24 24 null 11 adr.59 59 adr.24 22

jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null 11 adr.59 59 adr.24 = ; pom =.; while (pom.data!= 59) = pom; pom =.; jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null 11 adr.59 59 adr.24. = pom.; 23

jednosměrný, vkládání na začátek seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null 11 adr.24 59 adr.24 // zpracuj pom; jednosměrný, vkládání na začátek seznamu Seznam 11 24 24 null 11 adr.24 24

obousměrný data + odkaz předchozí, další složitější vkládání prvků na začátek na konec na pozici v seznamu prvek data predchozi obousměrně zřetězený seznam class Prvek{ private int data; private Prvek predchozi, ; public: Prvek(int d) { NastavData(d); predchozi = null; = null; } public int VratData() {} public void NastavData(int d) {} }; obousměrný, vkládání na konec seznamu Vložení hodnoty 24 do Seznamu 24 null null konec = new Prvek(24); konec = ; 25

obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu 24 null null 59 null null konec = new Prvek(59); obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu 24 null adr.59 59 null null konec konec. = ; 26

obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu 24 null adr.59 59 adr.24 null konec.predchozi = konec; obousměrný, vkládání na konec seznamu Vložení hodnoty 59 do Seznamu 24 null adr.59 59 adr.24 null konec = ; konec 27

obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu 24 null adr.59 11 null null 59 adr.24 null = new Prvek(11); konec obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu 24 null adr.59 11 null null 59 adr.24 adr.11 konec. = ; konec 28

obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu 24 null adr.59 11 adr.59 null 59 adr.24 adr.11.predchozi = konec; konec obousměrný, vkládání na konec seznamu Vložení hodnoty 11 do Seznamu 24 null adr.59 11 adr.59 null 59 adr.24 adr.11 konec = ; konec 29

obousměrný, vkládání na konec seznamu Seznam 24 59 11 24 null adr.59 11 adr.59 null 59 adr.24 adr.11 konec obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu 24 null adr.59 11 adr.59 null 59 adr.24 adr.11 = ; while (.data!=59) =.; konec 30

obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null adr.59 11 adr.59 null 59 adr.24 adr.11 pom =.predchozi; pom. =.; konec obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null adr.11 11 adr.59 null 59 adr.24 adr.11 konec pom =.; pom.predchozi =.predchozi; 31

obousměrný, vkládání na konec seznamu Vyjmutí hodnoty 59 ze Seznamu pom 24 null adr.11 11 adr.24 null 59 adr.24 adr.11 // zpracuj ; konec obousměrný, vkládání na konec seznamu Seznam 24 11 24 null adr.11 11 adr.24 null konec 32