Algorithmen und Datenstrukturen (f ur...
Transcript of Algorithmen und Datenstrukturen (f ur...
![Page 1: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/1.jpg)
Algorithmen und Datenstrukturen (fur ET/IT)Sommersemester 2015
Dr. Tobias Lasser
Computer Aided Medical ProceduresTechnische Universitat Munchen
![Page 2: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/2.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
2
![Page 3: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/3.jpg)
Was sind primitive Datentypen?
Primitive Datentypen
Wir bezeichnen grundlegende, in Programmiersprachen eingebauteDatentypen als primitive Datentypen.
Durch Kombination von primitiven Datentypen lassen sichzusammengesetzte Datentypen bilden.
Beispiele fur primitive Datentypen in C:
• int fur ganze Zahlen
• float fur floating point Zahlen
• bool fur logische Werte
3
![Page 4: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/4.jpg)
Bits und Bytes
1 Byte = 8 Bit
Bit 0Bit 7
Bytes als Maßeinheit fur Speichergrossen (nach IEC, traditionell):
• 210 Bytes = 1024 Bytes = 1 KiB, ein Kilo Byte (Kibi Byte)
• 220 Bytes = 1 MiB, ein Mega Byte (bzw. MebiByte)
• 230 Bytes = 1 GiB, ein Giga Byte (bzw. GibiByte)
• 240 Bytes = 1 TiB, ein Tera Byte (bzw. TebiByte)
• 250 Bytes = 1 PiB, ein Peta Byte (bzw. PebiByte)
• 260 Bytes = 1 EiB, ein Exa Byte (bzw. ExbiByte)
4
![Page 5: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/5.jpg)
Bits und Bytes
1 Byte = 8 Bit
Bit 0Bit 7
Bytes als Maßeinheit fur Speichergrossen (nach IEC, metrisch):
• 103 Bytes = 1000 Bytes = 1 kB, ein kilo Byte (großes B)
• 106 Bytes = 1 MB, ein Mega Byte
• 109 Bytes = 1 GB, ein Giga Byte
• 1012 Bytes = 1 TB, ein Tera Byte
• 1015 Bytes = 1 PB, ein Peta Byte
• 1018 Bytes = 1 EB, ein Exa Byte
Hinweis: auch Bits werden als Maßangabe verwendet, z.B. 16 Mbitoder 16 Mb (kleines b).
5
![Page 6: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/6.jpg)
1001110010001
0101001001000100010001
001000101010100100100010001
1110010001010101001001000100011
10010001 010101 00100100
01001110 00101 00010011
001001110 10011 011100101
10010001010 0100110 00111010111
010011100001001110000100111011101100110
110100 1001110010100011010001110 101001
11010 01001110010001110101100 01011
10011 000100111010010100111 10100
010100 01001110100101100 001001
10101110 010010100 10011101
100101010 010011101
001001110100110110010
0010011101011
6
![Page 7: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/7.jpg)
Primitive Datentypen in C-ahnlichen Sprachen
Wir betrachten im Detail primitive Datentypen fur:
1 naturliche Zahlen (unsigned integers)
2 ganze Zahlen (signed integers)
3 floating point Zahlen (floats)
7
![Page 8: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/8.jpg)
Zahldarstellung
• Dezimalsystem:• Basis x = 10
• Koeffizienten cn ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}• Beispiel: 12310 = 1 · 102 + 2 · 101 + 3 · 100
• Binarsystem:• Basis x = 2
• Koeffizienten cn ∈ {0, 1}• Beispiel: 11012 = 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 1310
8
![Page 9: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/9.jpg)
Zahldarstellung
• Oktalsystem:• Basis x = 8 (= 23)
• Koeffizienten cn ∈ {0, 1, 2, 3, 4, 5, 6, 7}• Beispiel: 1738 = 1 · 82 + 7 · 81 + 3 · 80 = 12310
• Hexadezimalsystem:• Basis x = 16 (= 24)
• Koeffizienten cn ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A,B,C ,D,E ,F}• Beispiel: 7B16 = 7 · 161 + B · 160 = 12310
9
![Page 10: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/10.jpg)
Wie viele Ziffern pro Zahl?
Problem
Gegeben Zahl z ∈ N, wie viele Ziffern m werden bezuglich Basis xbenotigt?
Losung
m = blogx(z)c+ 1
Erlauterung: (a ∈ R)
• bac = floor(a) = großte ganze Zahl kleiner gleich a
• dae = ceil(a) = kleinste ganze Zahl großer gleich a
a− 1 < bac ≤ a ≤ dae < a + 1
• logx(z) = ln(z)ln(x) , wobei
”ln“ der naturliche Logarithmus ist
10
![Page 11: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/11.jpg)
Wie viele Ziffern pro Zahl?
Losung
m = blogx(z)c+ 1
Beispiele: z = 123
• Basis x = 10:
m = blog10(123)c+ 1 = b2.0899 . . .c+ 1 = 3
• Basis x = 2:
m = blog2(123)c+ 1 = b6.9425 . . .c+ 1 = 7
• Basis x = 8:
m = blog8(123)c+ 1 = b2.3141 . . .c+ 1 = 3
• Basis x = 16:
m = blog16(123)c+ 1 = b1.7356 . . .c+ 1 = 2
11
![Page 12: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/12.jpg)
Großte Zahl pro Anzahl Ziffern?
Problem
Gegeben Basis x und m Ziffern, was ist die großte darstellbareZahl?
Losung
zmax = xm − 1
Beispiele:
• x = 2, m = 4:
zmax = 24 − 1 = 15 = 11112
• x = 2, m = 8:
zmax = 28 − 1 = 255 = 111111112
• x = 16, m = 2:
zmax = 162 − 1 = 255 = FF16
12
![Page 13: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/13.jpg)
Naturliche Zahlen in C-ahnlichen Sprachen
Naturliche Zahlen
In Computern verwendet man Binardarstellung mit einer fixenAnzahl Ziffern (genannt Bits).
Die primitiven Datentypen fur naturliche Zahlen sind:
• 8 Bits (ein Byte), darstellbare Zahlen: {0, . . . , 255}in C: unsigned char
• 16 Bits, darstellbare Zahlen: {0, . . . , 65535}in C: unsigned short
• 32 Bits, darstellbare Zahlen: {0, . . . , 4294967295}in C: unsigned long
• 64 Bits, darstellbare Zahlen: {0, . . . , 264 − 1}in C: unsigned long long
13
![Page 14: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/14.jpg)
Negative Zahlen
Darstellung durch 2-Komplement
Beispiel fur 4 Bits (darstellbare Zahlen: 24 = 16):
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9-9
Damit erhalt man:
0000 = +0 0100 = +4 1000 = -8 1100 = -40001 = +1 0101 = +5 1001 = -7 1101 = -30010 = +2 0110 = +6 1010 = -6 1110 = -20011 = +3 0111 = +7 1011 = -5 1111 = -1
Das erste Bit ist also das Vorzeichen!
14
![Page 15: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/15.jpg)
2-Komplement Darstellung I
2-Komplement Darstellung
Sei x ∈ N, x > 0. Die 2-Komplement Darstellung −xz von −xmittels n Bits ist gegeben durch
−xz = 2n − x .
Vorheriges Beispiel war: −5 = 1011, also x = 5 und n = 4.
Nun:−5z = 24 − 5 = 16− 5 = 11 = 10112
15
![Page 16: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/16.jpg)
2-Komplement Darstellung II
Sei bnbn−1 . . . b1 eine Bitfolge.
• (bnbn−1 . . . b1)z sei der Zahlwert in 2-Komplement Darstellung
• fur positive Zahlen von 0 bis 2n−1 − 1 entspricht(bnbn−1 . . . b1)z der Binardarstellung:
(0bn−1 . . . b1)z = (0bn−1 . . . b1)2
• fur negative Zahlen von −2n−1 bis −1 gilt
(1bn−1 . . . b1)z = −2n−1 + (0bn−1 . . . b1)2
• allgemein:
(bnbn−1 . . . b1)z = bn · (−2n−1) + (bn−1 . . . b1)2
16
![Page 17: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/17.jpg)
Eigenschaften 2-Komplement
• Fur n ∈ N gilt
(111 . . . 11)z = (−2n−1) + 2n−2 + . . . + 21 + 20
= −2n−1 + (2n−1 − 1)
= −1
• Um −x aus x in 2-Komplement Darstellung zu erhalten:
Bilde bitweises Komplement und addiere 1.
• Beispiel: Negatives von 6 = (0110)2 mit n = 4
−6 = (0110)z + 1 = (1001)z + 1 = (1010)z
• und zuruck:
6 = (1010)z + 1 = (0101)z + 1 = (0110)z
17
![Page 18: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/18.jpg)
Ganze Zahlen in C-ahnlichen Sprachen
Ganze Zahlen
Die primitiven Datentypen fur ganze Zahlen sind:
• 8 Bits: unsigned char {0, . . . , 255}signed char {−128, . . . , 127}
• 16 Bits: unsigned short {0, . . . , 65535}signed short {−32768, . . . , 32767}
• 32 Bits: unsigned long {0, . . . , 232 − 1}signed long {−231, . . . , 231 − 1}
• 64 Bits: unsigned long long {0, . . . , 264 − 1}signed long long {−263, . . . , 263 − 1}
• signed kann weggelassen werden (ausser bei char!)
• unsigned int und signed int sind je nach System 16, 32oder 64 Bit
18
![Page 19: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/19.jpg)
Rationale Zahlen I
Festkomma Darstellung:
• Komma an fester Stelle in Zahl
• Beispiel mit n = 32:
32 1
ganzzahliger Anteil gebrochener AnteilKomma
• Nachteile:• weniger große Zahlen darstellbar• feste Genauigkeit der Nachkommastellen
19
![Page 20: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/20.jpg)
Rationale Zahlen II
32 1
ganzzahliger Anteil gebrochener AnteilKomma
• Interpretation fur r ∈ Q:
r = cn · 2n + . . . + c0 · 20 + c−12−1 + . . . + c−m · 2−m
mit n Vorkomma- und m Nachkomma-Ziffern
• Beispiel:
11.012 = 1 · 21 + 1 · 20 + 0 · 2−1 + 1 · 2−2
= 2 + 1 + 0 + 14 = 3.2510
20
![Page 21: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/21.jpg)
Floating Point Zahlen I
Wissenschaftliche Notation:
• x = a · 10b fur x ∈ R, wobei:• a ∈ R mit 1 ≤ |a| < 10• b ∈ Z
• Beispiele:• −2.7315 · 102 ◦C absoluter Nullpunkt• 1.5 · 109 Hz Taktfrequenz A8X Prozessor
• Drei Bestandteile:• Vorzeichen• Mantisse |a|• Exponent b
• Problem: bei fester Lange der Mantisse (z.B. 3 Ziffern)• zwischen 1.23 · 104 = 12300 und 1.24 · 104 = 12400 keine Zahl
darstellbar!
21
![Page 22: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/22.jpg)
Floating Point Zahlen II
V Exponent E Mantisse M
23 Bit8 Bit 32 Bit float64 Bit double52 Bit11 Bit
1 Bit1 Bit
• wissenschaftliche Darstellung mit Basis 2
f = (−1)V · (1 + M) · 2E−bias
• Vorzeichen Bit V
• Mantisse M hat immer die Form 1.abc, also wird erste Stelleweggelassen (
”hidden bit“)
• Exponent E wird vorzeichenlos abgespeichert, verschoben umbias• bei 32 bit float: bias = 127, bei 64 bit double: bias = 1023
22
![Page 23: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/23.jpg)
Floating Point Zahlen III
Ubliche Floating Point Formate:
Bit Vorz. Exponent Mantisse gultigeDezimalst.
darstellbarerBereich
32 1 Bit 8 Bit 23 Bit ∼ 7 ±2 · 10−38 bis± 2 · 1038
64 1 Bit 11 Bit 52 Bit ∼ 15 ±2 · 10−308 bis± 2 · 10308
80 1 Bit 15 Bit 64 Bit ∼ 19 ±1 · 10−4932 bis± 1 · 104932
In C:
float (32 Bit), double (64 Bit), long double (80 Bit)
23
![Page 24: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/24.jpg)
Vorsicht mit Floating Point!
Floating Point Zahlen sind bequem, aber Vorsicht!
• Viele Dezimalzahlen haben keine Floating Point Darstellung• Beispiel: 0.110 = 0.0001100110011 . . .2 (periodisch)
• Durch feste Lange der Mantisse sind ebenfalls viele Zahlennicht darstellbar• Beispiel: mit 3 Ziffern Mantisse ist zwischen 1.23 · 104 = 12300
und 1.24 · 104 = 12400 keine Zahl darstellbar!
• Kritisch sind Vergleiche von Floating Point Zahlen• Beispiel: (0.1 + 0.2 == 0.3) ist meist FALSE!
• Zins-Berechnungen und dergleichen NIE mit Floating PointZahlen!• Stattdessen: spezielle Bibliotheken wie GMP
24
![Page 25: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/25.jpg)
Definition Datenstruktur
Definition Datenstruktur (nach Prof. Eckert)
Eine Datenstruktur ist eine
• logische Anordnung von Datenobjekten,
• die Informationen reprasentieren,
• den Zugriff auf die reprasentierte Information uberOperationen auf Daten ermoglichen und
• die Information verwalten.
Zwei Hauptbestandteile:
• Datenobjekte• z.B. definiert uber primitive Datentypen
• Operationen auf den Objekten• z.B. definiert als Funktionen
25
![Page 26: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/26.jpg)
Primitive Datentypen in C
• Naturliche Zahlen, z.B. unsigned short, unsigned long
• Wertebereich: bei n Bit von 0 bis 2n − 1• Operationen: +, -, *, /, %, <, ==, !=, >
• Ganze Zahlen, z.B. int, long• Wertebereich: bei n Bit von −2n−1 bis 2n−1 − 1• Operationen: +, -, *, /, %, <, ==, !=, >
• Floating Point Zahlen, z.B. double, float• Wertebereich: abhangig von Große• Operationen: +, -, *, /, <, ==, !=, >
• Logische Werte, bool
• Wertebereich: true, false• Operationen: &&, ||, !, ==, !=
26
![Page 27: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/27.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
27
![Page 28: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/28.jpg)
Definition Feld
Definition Feld
Ein Feld A ist eine Folge von n Datenelementen (di )i=1,...,n,
A = d1, d2, . . . , dn
mit n ∈ N0.
Die Datenelemente di sind beliebige Datentypen (z.B. primitive).
Beispiele:
• A sind die naturlichen Zahlen von 1 bis 10, aufsteigendgeordnet:
A = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
• Ist n = 0, so ist das Feld leer.
28
![Page 29: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/29.jpg)
Feld als sequentielle Liste
Reprasentation von Feld A als sequentielle Liste (oder Array)
• feste Anzahl n von Datenelementen
• zusammenhangend gespeichert
• in linearer Reihenfolge mit Index
• Zugriff auf i-tes Element uber Index i: A[i]
...Feld A: A[n-1] A[n-2] A[2] A[1] A[0]
Achtung: Indizierung startet meist bei 0!
29
![Page 30: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/30.jpg)
Beispiel sequentielle Liste
Feld A: 15 8 0
A[0]A[1]A[2]
• Feld-Deklaration in C (optionales Beispiel):
int A[3];
• Zugriff auf Elemente:
A[0] = 0;
A[1] = 8;
A[2] = A[1] + 7; // nun: A[2] == 15
30
![Page 31: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/31.jpg)
Eigenschaften sequentielle Liste
Feld A mit Lange n als sequentielle Liste (Array)
• Vorteile:• direkter Zugriff auf Elemente in konstanter Zeit mittels A[i]• sequentielles Durchlaufen sehr einfach
• Nachteile:• Verschwendung von Speicher falls Liste nicht voll belegt• Verlangern der sequentiellen Liste aufwendig• Hinzufugen und Loschen von Elementen aufwendig
31
![Page 32: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/32.jpg)
Verlangern der sequentiellen Liste
Gegeben: Feld A, Lange n+1, als sequentielle Liste
Gewunscht: Feld A erweitert auf Lange n+2
• neuen Speicher der Große n+2 reservieren
• alte Liste in neuen Speicher kopieren
...Feld A: A[n] A[n-1] A[2] A[1] A[0]
...neuesFeld A: A[n] A[n-1] A[2] A[1]A[n+1] A[0]
32
![Page 33: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/33.jpg)
Loschen von Element aus Liste
Gegeben: Feld A, Lange n, als sequentielle Liste
Gewunscht: Element i aus Feld A loschen
• Element i entfernen
• Listenelemente nach i umkopieren
25 16 4 1 09
25 9 4 116
33
![Page 34: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/34.jpg)
Einfugen von Element in Liste
Gegeben: Feld A, Lange n, als sequentielle Liste
Gewunscht: neues Element in Feld A an Stelle i einfugen
• Listenelemente nach i umkopieren
• Element i einfugen
25 9 4 116
25 16 8 4 19
34
![Page 35: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/35.jpg)
Ausblick: Anwendung von sequentiellen Listen
in 2D und 3D Bildern!
35
![Page 36: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/36.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
36
![Page 37: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/37.jpg)
Bytes und ASCII
Interpretation eines Bytes als Zeichen (anstatt Zahlen)−→ z.B. ASCII Code
7 Bit ASCII Code:
Code ..0 ..1 ..2 ..3 ..4 ..5 ..6 ..7 ..8 ..9 ..A ..B ..C ..D ..E ..F
0.. nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si
1.. dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us
2.. sp ! “ # $ % & ’ ( ) * + , - . /
3.. 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4.. @ A B C D E F G H I J K L M N O
5.. P Q R S T U V W X Y Z [ \ ] ˆ
6.. ‘ a b c d e f g h i j k l m n o
7.. p q r s t u v w x y z { ‖ } ˜ del
37
![Page 38: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/38.jpg)
ASCII Erweiterungen, Unicode
• ASCII verwendet nur 7 Bit von einem Byte• enthalt z.B. keine Umlaute (a, o, u) oder Akzente (e, c)
• es gibt verschiedene Erweiterungen von ASCII auf 8 Bit• in Europa ist ISO Latin-1 verbreitet (ISO Norm 8859-1)• belegt die Codes von 128-255 (bzw. 80-FF in hex)
• Unicode wurde als 16 Bit Codierung eingefuhrt• erste 128 Zeichen stimmen mit ASCII uberein• die nachsten 128 Zeichen mit ISO Latin-1• danach z.B. kyrillische, arabische, japanische Schriftzeichen
• UTF-8 ist eine Mehrbyte-Codierung von Unicode (1-6 Bytes)• Code-Lange wird durch die ersten Bits codiert
38
![Page 39: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/39.jpg)
Zeichen und Zeichenfolgen
Reprasentation eines ASCII Zeichens in C: char
• Zeichen-Literale in einfachen Anfuhrungszeichen
Beispiele: ’A’, ’u’, ’D’
char zeichen = ’A’;
• Vorsicht bei nicht-ASCII Zeichen!
Reprasentation einer Zeichenfolge? (Englisch: String)
• String-Literale in doppelten Anfuhrungszeichen
Beispiel: “AuD“
• in C gespeichert als Feld (sequentielle Liste) von Zeichen:
'D' 'u' 'A''\0'0123 Index
39
![Page 40: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/40.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
40
![Page 41: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/41.jpg)
Definition Feld
Definition Feld
Ein Feld A ist eine Folge von n Datenelementen (di )i=1,...,n,
A = d1, d2, . . . , dn
mit n ∈ N0.
Die Datenelemente di sind beliebige Datentypen (z.B. primitive).
41
![Page 42: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/42.jpg)
Feld als sequentielle Liste
Reprasentation von Feld A als sequentielle Liste (oder Array)
• feste Anzahl n von Datenelementen
• zusammenhangend gespeichert
• in linearer Reihenfolge mit Index
• Zugriff auf i-tes Element uber Index i: A[i]
...Feld A: A[n-1] A[n-2] A[2] A[1] A[0]
42
![Page 43: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/43.jpg)
Operationen auf sequentiellen Listen
Sei A sequentielle Liste.
Operationen:
• initialize: Initialisiere seq. Liste A mit nElementen
• elementAt(i): Zugriff auf i-tes Element von A:A[i]
• insert: fuge Element in seq. Liste A ein
(erfordert Umkopieren und evtl. Verlangernvon A)
• erase: entferne Element aus seq. Liste A
(erfordert Umkopieren)
A[n-1] A[n-2] .. A[1] A[0]..
25 9 4 116
25 16 8 4 19
25 16 4 1 09
25 9 4 116
43
![Page 44: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/44.jpg)
Feld als einfach verkettete Liste
Reprasentation von Feld A als verkettete Liste
• dynamische Anzahl von Datenelementen
• in linearer Reihenfolge gespeichert (nicht notwendigerweisezusammenhangend!)
• mit Referenzen oder Zeigern verkettet
Daten Daten DatenDatenstart
nullnext next next next
auf Englisch: linked list
44
![Page 45: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/45.jpg)
Verkettete Liste
Daten Daten DatenDatenstart
nullnext next next next
• Folge von miteinander verbundenen Elementen
• jedes Element di besteht aus• Daten: Wert des Feldes an Position i• next: Referenz auf das nachste Element di+1
Daten
next
Node:
• start ist Referenz auf erstes Element des Feldes d1
• letztes Element dn hat keinen Nachfolger• symbolisiert durch null-Referenz
45
![Page 46: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/46.jpg)
Operationen auf verketteter Liste
Zugriff auf Element i:
• beginne bei start Referenz
• “vorhangeln” entlang next Referenzen bis zum i-ten Element
Beispiel fur i=3:
Daten Daten DatenDatenstart
nullnext next next next
Hilfsreferenz
46
![Page 47: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/47.jpg)
Operationen auf verketteter Liste
Loschen von Element i:
• Zugriff auf Element i-1
• “umhangen” von next Referenz von Element i-1 auf Elementi+1
Beispiel fur i=3:
Daten Daten DatenDatenstart
nullnext next next next
Hilfsreferenz
47
![Page 48: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/48.jpg)
Operationen auf verketteter ListeEinfugen von Element an Stelle i:
• Zugriff auf Element i-1
• “umhangen” von next Referenz von Element i-1 auf neuesElement
• next Referenz von neuem Element setzen auf altes Element i
Beispiel fur i=3:
Daten Daten DatenDatenstart
nullnext next next next
HilfsreferenzDaten
next
neues Element
48
![Page 49: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/49.jpg)
Gegenuberstellung sequentielle Liste und verkettete Liste
Sequentielle Liste Verkettete Liste
⊕ Direkter Zugriff auf i-tesElement
Zugriff auf i-tes Element er-fordert i Iterationen
⊕ sequentielles Durchlaufensehr einfach
⊕ sequentielles Durchlaufensehr einfach
statische Lange, kann Spei-cher verschwenden
⊕ dynamische Lange
zusatzlicher Speicher furZeiger benotigt
Einfugen/Loschen erforderterheblich Kopieraufwand
⊕ Einfugen/Loschen einfach
49
![Page 50: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/50.jpg)
Feld als doppelt verkettete Liste
Reprasentation von Feld A als doppelt verkettete Liste
• verkettete Liste
• jedes Element mit Referenzen doppelt verkettet
Daten Daten DatenDatenstart
null
null
next next next next
prev prev prev prev
stop
auf Englisch: doubly linked list
50
![Page 51: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/51.jpg)
Doppelt verkettete Liste
Daten Daten DatenDatenstart
null
null
next next next next
prev prev prev prev
stop
• Folge von miteinander verbundenen Elementen• jedes Element di besteht aus
• Daten: Wert des Feldes an Position i• next: Referenz auf das nachste Element di+1
• prev: Referenz auf das vorherige Element di−1
Daten
next
Node:
prev
• start/stop sind Referenzen auf erstes/letztes Element desFeldes
• letztes Element dn hat keinen Nachfolger• symbolisiert durch null-Referenz
51
![Page 52: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/52.jpg)
Operationen auf doppelt verketteter Liste
Loschen von Element i:
• Zugriff auf Element i
• “umhangen” von next von Element i-1 auf Element i+1
• “umhangen” von prev von Element i+1 auf Element i-1
Beispiel fur i=3:
Daten Daten DatenDatenstart
null
null
next next next next
prev prev prev prev
stop
52
![Page 53: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/53.jpg)
Operationen auf doppelt verketteter ListeEinfugen von Element an Stelle i:• Zugriff auf Element i• “umhangen” von next von Element i-1 auf neues Element,
sowie “umhangen” von prev von altem Element i auf neuesElement
• next bzw. prev von neuem Element setzen auf altes Element ibzw. Element i-1
Beispiel fur i=3:
Daten Daten DatenDatenstart
null
null
next next next next
prev prev prev prev
stop
Daten
next
prev
53
![Page 54: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/54.jpg)
Eigenschaften doppelt verkettete Liste
Feld A als doppelt verkettete Liste
• Vorteile:• Durchlauf in beiden Richtungen moglich• Einfugen/Loschen potentiell einfacher, da man sich Vorganger
nicht extra merken muss
• Nachteile:• zusatzlicher Speicher erforderlich fur zwei Referenzen• Referenzverwaltung komplizierter und fehleranfallig
54
![Page 55: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/55.jpg)
Zusammenfassung Felder
Ein Feld A kann reprasentiert werden als:
• sequentielle Liste (array)• mit fixer Lange
• verkettete Liste (linked list)• mit dynamischer Lange
• doppelt verkettete Liste (doubly linked list)• mit dynamischer Lange
Eigenschaften:
• einfach und flexibel
• aber manche Operationen aufwendig
Als nachstes −→ Aufgabe von Flexibilitat fur Effizienz
55
![Page 56: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/56.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
56
![Page 57: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/57.jpg)
Definition Abstrakter Datentyp
Abstrakter Datentyp (englisch: abstract data type, ADT)
Ein abstrakter Datentyp ist ein mathematisches Modell furbestimmte Datenstrukturen mit vergleichbarem Verhalten.
Ein abstrakter Datentyp wird indirekt definiert uber
• mogliche Operationen auf ihm sowie
• mathematische Bedingungen (oder: constraints) uber dieAuswirkungen der Operationen (u.U. auch die Kosten derOperationen).
57
![Page 58: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/58.jpg)
Beispiel abstrakter Datentyp: abstrakte Variable
Abstrakte Variable V ist eine veranderliche Dateneinheit
mit zwei Operationen
• load(V) liefert einen Wert
• store(V, x) wobei x ein Wert
und der Bedingung
• load(V) liefert immer den Wert x der letzten Operationstore(V, x)
58
![Page 59: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/59.jpg)
Beispiel abstrakter Datentyp: abstrakte Liste (Teil 1)
Abstrakte Liste L ist ein Datentyp
mit Operationen
• pushFront(L, x) liefert eine Liste
• front(L) liefert ein Element
• rest(L) liefert eine Liste
und den Bedingungen
• ist x Element, L Liste, dann liefert front(pushFront(L, x)) dasElement x.
• ist x Element, L Liste, dann liefert rest(pushFront(L, x)) dieListe L.
59
![Page 60: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/60.jpg)
Beispiel abstrakter Datentyp: abstrakte Liste (Teil 2)
Abstrakte Liste L. Weitere Operationen sind
• isEmpty(L) liefert true oder false
• initialize() liefert eine Listen Instanz
mit den Bedingungen
• initialize() 6= L fur jede Liste L (d.h. jede neue Liste istseparat von alten Listen)
• isEmpty(initialize()) == true (d.h. eine neue Liste ist leer)
• isEmpty(pushFront(L, x)) == false (d.h. eine Liste ist nacheinem pushFront nicht leer)
60
![Page 61: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/61.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
61
![Page 62: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/62.jpg)
Definition Stack
Stack (oder deutsch: Stapel, Keller)
Ein Stack ist ein abstrakter Datentyp. Er beschreibt eine spezielleListenstruktur nach dem Last In – First Out (LIFO) Prinzip mitden Eigenschaften
• loschen, einfugen ist nur am Ende der Liste erlaubt,
• nur das letzte Element darf manipuliert werden.
Operationen auf Stacks:
• push: legt ein Element auf den Stack (einfugen)
• pop: entfernt das letzte Element vom Stack (loschen)
• top: liefert das letzte Stack-Element
• isEmpty: liefert true falls Stack leer
• initialize: Stack erzeugen und in Anfangszustand (leer) setzen
62
![Page 63: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/63.jpg)
Definition Stack
Stack (oder deutsch: Stapel, Keller)
Ein Stack ist ein abstrakter Datentyp. Er beschreibt eine spezielleListenstruktur nach dem Last In – First Out (LIFO) Prinzip mitden Eigenschaften
• loschen, einfugen ist nur am Ende der Liste erlaubt,
• nur das letzte Element darf manipuliert werden.
Pizza #1
Pizza #2
neue Pizza
Pizza #3
"push"
63
![Page 64: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/64.jpg)
Definition Stack (exakter)
Stack S ist ein abstrakter Datentyp mit Operationen
• pop(S) liefert einen Wert
• push(S, x) wobei x ein Wert
mit der Bedingung
• ist x Wert und V abstrakte Variable, dann ist die Sequenzpush(S, x); store(V, pop(S)) aquivalent zu store(V, x)
sowie der Operation
• top(S) liefert einen Wert
mit der Bedingung
• ist x Wert und V abstrakte Variable, dann ist die Sequenzpush(S, x); store(V, top(S)); aquivalent zupush(S, x); store(V, x)
64
![Page 65: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/65.jpg)
Definition Stack (exakter, Teil 2)
Stack S. Weitere Operationen sind
• isEmpty(S) liefert true oder false
• initialize() liefert eine Stack Instanz
mit den Bedingungen
• initialize() 6= S fur jeden Stack S (d.h. jeder neue Stack istseparat von alten Stacks)
• isEmpty(initialize()) == true (d.h. ein neuer Stack ist leer)
• isEmpty(push(S, x)) == false (d.h. ein Stack nach push istnicht leer)
65
![Page 66: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/66.jpg)
Anwendungsbeispiele Stack
• Auswertung arithmetischer Ausdrucke (s. nachste Folie)
• Call-Stack bei Funktionsaufrufen
• Einfache Vorwarts- / Ruckwarts Funktion in Software• z.B. im Internet-Browser
• Syntaxanalyse eines Programms• z.B. zur Erkennung von Syntax-Fehlern durch Compiler
66
![Page 67: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/67.jpg)
Auswertung arithmetischer Ausdrucke
Gegeben sei ein vollstandig geklammerter, einfacher arithmetischerAusdruck mit Bestandteilen Zahl, +, *, =
Beispiel: (3 * (4 + 5)) =
Schema:
• arbeite Ausdruck von links nach rechts ab, speichere jedesZeichen ausser ) und = in Stack S
• bei ) werte die 3 obersten Elemente von S aus, dann entfernedie passende Klammer ( vom Stack S und speichere Ergebnisin Stack S
• bei = steht das Ergebnis im obersten Stack-Element von S
67
![Page 68: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/68.jpg)
Implementation Stack
Stack ist abstrakter Datentyp.
• Implementation ist nicht festgelegt
• nur Operationen und Bedingungen sind festgelegt
Stack kann auf viele Arten implementiert werden, zum Beispiel als:
• sequentielle Liste
• verkettete Liste
69
![Page 69: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/69.jpg)
Implementation Stack als sequentielle Liste
• Stack-Elemente speichern in sequentieller Liste A (Lange n)
• oberstes Stack-Element merken mittels Variable top
• falls Stack leer ist top == -1
01n-2n-1 ...
top
-1
• push(x) inkrementiert top und speichert x in A[top]
• pop() liefert A[top] zuruck und dekrementiert top
• top() liefert A[top] zuruck
70
![Page 70: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/70.jpg)
Implementation Stack als sequentielle Liste
01n-2n-1 ...
top
-1
9 4 101n-2n-1 ...
top
-1
9 4 101n-2n-1 ...
top
-1
push(1);push(4);push(9);
initialize();
pop();
71
![Page 71: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/71.jpg)
Implementation Stack als verkettete Liste
• Stack-Elemente speichern in verketteter Liste L
• oberstes Stack-Element wird durch start Referenz markiert
Daten Daten DatenDatenstart
nullnext next next next
• push(x) fugt Element an erster Position ein
• pop() liefert Element an erster Position zuruck und entfernt es
• top() liefert Element an erster Position zuruck
72
![Page 72: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/72.jpg)
Zusammenfassung Stack
• Stack ist abstrakter Datentyp als Metapher fur einen Stapel• wesentliche Operationen: push, pop
• Implementation als sequentielle Liste• fixe Große (entweder Speicher verschwendet oder zu klein)• push, pop sehr effizient
• Implementation als verkettete Liste• dynamische Große, aber Platz fur Zeiger “verschwendet”• push, pop sehr effizient
73
![Page 73: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/73.jpg)
Programm heute
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
74
![Page 74: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/74.jpg)
Definition Queue
Queue (oder deutsch: Warteschlange)
Eine Queue ist ein abstrakter Datentyp. Sie beschreibt einespezielle Listenstruktur nach dem First In – First Out (FIFO)Prinzip mit den Eigenschaften
• einfugen ist nur am Ende der Liste erlaubt,
• entfernen ist nur am Anfang der Liste erlaubt.
Person stellt sich anPerson verlässt Schlange
75
![Page 75: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/75.jpg)
Definition Queue
Queue (oder deutsch: Warteschlange)
Eine Queue ist ein abstrakter Datentyp. Sie beschreibt einespezielle Listenstruktur nach dem First In – First Out (FIFO)Prinzip mit den Eigenschaften
• einfugen ist nur am Ende der Liste erlaubt,
• entfernen ist nur am Anfang der Liste erlaubt.
Operationen auf Queues:
• enqueue: fugt ein Element am Ende der Schlange hinzu
• dequeue: entfernt das erste Element der Schlange
• isEmpty: liefert true falls Queue leer
• initialize: Queue erzeugen und in Anfangszustand (leer) setzen
76
![Page 76: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/76.jpg)
Definition Queue (exakter)Queue Q ist ein abstrakter Datentyp mit Operationen
• dequeue(Q) liefert einen Wert
• enqueue(Q, x) wobei x ein Wert
• isEmpty(Q) liefert true oder false
• initialize liefert eine Queue Instanz
und mit Bedingungen
• ist x Wert, V abstrakte Variable und Q eine leere Queue,dann ist die Sequenz enqueue(Q, x); store(V, dequeue(Q))aquivalent zu store(V, x)
• sind x,y Werte, V abstrakte Variable und Q eine leere Queue,dann ist die Sequenz enqueue(Q, x); enqueue(Q, y); store(V,dequeue(Q)) aquivalent zu store(V, x); enqueue(Q, y)
• initialize() 6= Q fur jede Queue Q
• isEmpty(initialize()) == true
• isEmpty(enqueue(Q, x)) == false
77
![Page 77: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/77.jpg)
Beispiel: Queue
Q:
Anfang
Q:
Anfang
Q:
Anfang
Q:
Anfang
Q:
Anfang
1
2
32
1
1
Q:
Anfang
2
3
3
Q = initialize();
enqueue(1);
enqueue(2);
enqueue(3);
dequeue();
dequeue();
78
![Page 78: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/78.jpg)
Anwendungsbeispiele Queue
• Druckerwarteschlange
• Playlist von iTunes (oder ahnlichem Musikprogramm)
• Kundenauftrage bei Webshops
• Warteschlange fur Prozesse im Betriebssystem (Multitasking)
79
![Page 79: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/79.jpg)
Anwendungsbeispiel Stack und Queue
Palindrom
Ein Palindrom ist eine Zeichenkette, die von vorn und von hintengelesen gleich bleibt.
Beispiel: Reittier
• Erkennung ob Zeichenkette ein Palindrom ist
• ein Stack kann die Reihenfolge der Zeichen umkehren
• eine Queue behalt die Reihenfolge der Zeichen
80
![Page 80: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/80.jpg)
Palindrom Erkennung
Algorithmus:
• Eingabe: Zeichenkette k
• durchlaufe k von links nach rechts• fuge dabei jedes Zeichen in Stack S
(push) und Queue Q (enqueue) ein
• leere den Stack S (pop) und die Queue Q(dequeue) und vergleiche die Zeichen• falls die Zeichen nicht gleich sind, ist k
kein Palindrom• ansonsten ist k Palindrom
• Ausgabe: k ist Palindrom oder nicht
Zeichenkette k: RADAR
Queue Q:
RADAR
Stack S:
R A D A R
Anfang
top
81
![Page 81: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/81.jpg)
Implementation Queue
Auch Queue ist abstrakter Datentyp.
• Implementation ist nicht festgelegt
• nur Operationen und Bedingungen sind festgelegt
Queue kann auf viele Arten implementiert werden, zum Beispielals:
• verkettete Liste
• sequentielle Liste
82
![Page 82: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/82.jpg)
Implementation Queue als verkettete Liste
• Queue-Elemente speichern in verketteter Liste L
• Anfang der Queue wird durch anfang Referenz markiert
• Ende der Queue wird durch extra ende Referenz markiert
Daten Daten DatenDatenanfang
NULLnext next next next
ende
• enqueue(x) fugt Element bei ende Referenz ein
• dequeue() liefert Element bei anfang Referenz zuruck undentfernt es
83
![Page 83: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/83.jpg)
Implementation Queue als sequentielle Liste
• Queue-Element speichern in sequentieller Liste L (Lange n)
• Anfang der Queue wird durch Index anfang markiert
• Ende der Queue wird durch Index ende markiert
15 8 001n-2n-1 2
anfang
...
ende
• enqueue(x) fugt Element bei Index ende+1 ein
• dequeue liefert Element bei Index anfang zuruck und entferntes durch Inkrement von anfang
84
![Page 84: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/84.jpg)
Implementation Queue als sequentielle Liste 2
Problem:
15 8 001n-2n-1 2
anfang
...
ende
wird nach ein paar Operationen zu
47 11 301n-2n-1 2
anfang
...
ende
Linksdrift!
Losungsansatz: zirkulare sequentielle Liste.
85
![Page 85: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/85.jpg)
Implementation Queue als zwei Stacks
• Queue Q kann mittels zwei Stacks implementiert werden
• erster Stack inbox wird fur enqueue benutzt:• Q.enqueue(x) resultiert in inbox.push(x)
• zweiter Stack outbox wird fur dequeue benutzt:• falls outbox leer, kopiere alle Elemente von inbox zu outbox:
outbox.push( inbox.pop() )
• Q.dequeue liefert outbox.pop() zuruck
1
2
3
inbox outbox
enqueue
3
2
1
inbox outbox
dequeue
86
![Page 86: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/86.jpg)
Zusammenfassung Queue
• Queue ist abstrakter Datentyp als Metapher fur eineWarteschlange• wesentliche Operationen: enqueue, dequeue
• Implementation als verkettete Liste• dynamische Große, aber Platz fur Referenzen “verschwendet”• enqueue, dequeue sehr effizient
• Implementation als sequentielle Liste• fixe Große (entweder Speicher verschwendet oder zu klein)• enqueue, dequeue sehr effizient• Queue sehr schnell voll durch “Linksdrift”
(ist aber durch zirkulare sequentielle Liste losbar)
87
![Page 87: Algorithmen und Datenstrukturen (f ur ET/IT)campar.in.tum.de/files/teaching/2015ss/AuD/AuD-kapitel3.pdf · Beispiele f ur primitive Datentypen in C: int f ur ganze Zahlen ... 210](https://reader034.fdocument.pub/reader034/viewer/2022051523/5a78b78a7f8b9a21538c5b9b/html5/thumbnails/87.jpg)
Zusammenfassung
1 Einfuhrung
2 Grundlagen von Algorithmen
3 Grundlagen von DatenstrukturenPrimitive Datentypen und ZahldarstellungFelder als sequentielle ListeZeichen und ZeichenfolgenFelder als verkettete ListeAbstrakte DatentypenStacksQueues
88