Spezielle Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Spezielle Datenstrukturen"

Transkript

1 Spezielle Datenstrukturen Stapel (Stack) Beschreibung der Datenstruktur Stapel Ein Stapel (engl. Stack), auch Stapelspeicher oder Keller bzw. Kellerspeicher genannt, ist eine Datenstruktur, in der Daten nach dem LIFO-Prinzip verwaltet werden. LIFO steht für Last In First Out und bedeutet: Was zuletzt auf den Stack kommt (Last In), verlässt den Stack als Erstes (First Out). Stellen Sie sich einen Spielkartenstapel vor. Wenn Sie eine Karte ziehen möchten, dürfen Sie nur die oberste Karte vom Stapel nehmen. Wollen Sie eine Karte ablegen, wird sie stets oben auf den Stapel gelegt. Die zuletzt auf den Stapel gelegte Karte (Last in) muss als Erste vom Stapel genommen werden (First Out). Stack mit n Elementen Operationen für einen Stapel Neues Element hinzufügen push: Das neue Element wird oben in den Stack eingefügt. Der Stapelzeiger auf das oberste Element des Stapels wird entsprechend angepasst. Element entfernen pop: Das oberste Element wird vom Stack gelöscht. Der Stapelzeiger auf das oberste Element des Stacks wird entsprechend angepasst. Prüfen, ob Stack leer ist empty: Ein Stapelunterlauf tritt ein, wenn versucht wird, aus einem Stack zu lesen, obwohl dieser leer ist. Deshalb sollte vor dem Löschen eines Elements überprüft werden, ob der Stack noch Elemente besitzt. Für Stacks, die eine feste maximale Größe besitzen, ist auch das Gegenteil möglich, der Stapelüberlauf. Push Element in einen Stack einfügen Pop Element von einem Stack entfernen Java stellt die Datenstruktur Stapel mit der Klasse Stack <E> zur Verfügung, wobei <E> Platzhalter für den Datentyp des Objekts ist. HERDT-Verlag 1

2 Operationen für einen Stapel s in Java s.empty() s.peek() s.pop() s.push(item) s.search(item) Liefert als Ergebnis true, falls der Stack leer ist, sonst false Liefert das oberste Element des Stacks, ohne das Element zu entfernen, oder eine Fehlermeldung, falls der Stack leer ist Liefert das oberste Element des Stacks und löscht es vom Stack oder liefert eine Fehlermeldung, falls der Stack leer ist Legt das übergebene Element (item) auf dem Stack ab und liefert dieses Element auch als Ergebnis Durchsucht die Elemente des Stacks von Anfang (Top) an und übergibt die erste gefundene Position, an der das Element mit dem übergebenen Element (item) übereinstimmt. Ein Ergebnis von -1 bedeutet, dass das Element nicht im Stack vorhanden ist. Beispiel für die Anwendung eines Stapels in Java: TestPalindrome.java Mithilfe eines Stacks soll herausgefunden werden, ob Wörter (bzw. Sätze) Palindrome sind, also Wörter, die vorwärts und rückwärts gelesen gleich sind, z. B. RADAR. Die zu prüfende Zeichenfolge wird zeichenweise in einem Stack abgelegt und danach zeichenweise wieder ausgelesen. Das Resultat ist automatisch die Zeichenfolge in umgekehrter Reihenfolge. Um herauszufinden, ob ein Palindrom vorliegt, wird die zu prüfende Zeichenkette mit der ausgelesenen Zeichenkette verglichen. import java.util.*; public class TestPalindrome... Stack<Character> palindrome = new Stack<Character>(); String original = "reliefpfeiler"; //Testwort String reverse = ""; for (int i = 0; i < original.length(); i++) palindrome.push(character.valueof(original.charat(i))); if (palindrome.empty()) System.out.println("Der Stapel war leer."); else 2 HERDT-Verlag

3 ... for (int i = 0; i < original.length(); i++) reverse = reverse + palindrome.pop(); if (original.equals(reverse)) System.out.println(original+" ist ein Palindrom."); else System.out.println(original+" ist kein Palindrom."); In Java stehen viele fertige Klassen für die Anwendung in Programmen zur Verfügung. Standard- Klassen, z. B. für die Ausgabe, stehen automatisch in den Programmen zur Verfügung, andere müssen explizit eingebunden werden. Mit der import-anweisung wird dem Programm z. B. mitgeteilt, wo die benötigte Klasse Stack<E> zu finden ist. Ein neuer Stack vom Typ Character wird erstellt. Da die Klasse Stack<E> für E einen sogenannten Objektdatentyp verlangt, wird anstelle des Datentyps char der Objektdatentyp Character verwendet, der den Wert eines Zeichens in ein Objekt umwandelt. Zwei Zeichenketten (Datentyp String) werden angelegt. Die Zeichenkette original enthält den zu vergleichenden Begriff; in der Zeichenkette reverse soll die rückwärts gelesene Zeichenkette gespeichert werden. In der ersten Schleife werden die einzelnen Zeichen der Zeichenkette der Reihe nach in den Stack geschrieben (push). Die Anzahl der Schleifendurchläufe entspricht der Anzahl der Zeichen der Zeichenkette, die mit original.length()ermittelt wird. Mit original.charat(i)wird das Zeichen an der Stelle i in der Zeichenkette ermittelt. Character.valueOf(c) liefert für das Zeichen c das entsprechende Zeichenobjekt, danach wird das Zeichenobjekt x mit palindrome.push(x)auf den Stack gelegt. Falls der Stack leer ist, wird eine Meldung ausgegeben. Die zweite Schleife dient dazu, die einzelnen Zeichen wieder aus dem Stack zu lesen und zu entfernen (pop). Jedes gelesene Zeichen wird an die Zeichenkette reverse angehängt. Da das erste ausgelesene Zeichen das letzte Zeichen der Originalzeichenkette ist, kehrt sich die Reihenfolge der Buchstaben um. Entspricht das Originalwort (Variable original) dem Wort in umgekehrter Richtung (Variable reverse), handelt es sich um ein Palindrom. Je nach Ergebnis des Vergleichs erfolgt eine entsprechende Ausgabe. Wo werden Stacks angewendet? Stacks werden beispielsweise zur Programmierung folgender Anwendungen eingesetzt: Auswerten von geklammerten Ausdrücken Ausführen rekursiver Prozeduren Durchsuchen von Baumstrukturen (traversieren) HERDT-Verlag 3

4 8.2 Schlangen (Queue) Beschreibung der Datenstruktur Schlange Schlangen (engl. Queue), sind wie Stapel Datenstrukturen mit eingeschränkten Zugriffsmöglichkeiten. Im Gegensatz zu Stacks arbeiten sie jedoch nach dem FIFO-Prinzip (First In, First Out), das heißt, dass das Element, welches als Erstes in die Schlange eingefügt wurde, sich somit am Kopf der Schlange befindet, auch als Erstes wieder ausgelesen wird. Neue Elemente werden stets am Ende der Queue angefügt. Das ist der gleiche Vorgang wie bei einer Warteschlange von Autos an einer roten Ampel. Hinzukommende Fahrzeuge reihen sich hinten ein, das Fahrzeug am Anfang der Schlange fährt als Erstes weiter. Bei einer Queue werden nur das erste und das letzte Element betrachtet. Die Elemente werden genau in der Reihenfolge aus der Queue ausgelesen, in der sie eingefügt wurden. Schlange mit n Elementen Operationen für eine Queue Neues Element hinzufügen enqueue: Das neue Element wird am Ende der Queue eingefügt. Der Zeiger auf das Ende der Queue wird entsprechend angepasst. Element entfernen dequeue: Das erste Element wird aus der Queue gelöscht. Der Zeiger auf den Kopf der Queue wird entsprechend angepasst. Enqueue ein Element einer Queue hinzufügen Dequeue ein Element aus einer Queue löschen Wo werden Queues angewendet? Queues werden beispielsweise zur Programmierung folgender Anwendungen eingesetzt: Verwaltung von sequenziell abzuarbeitenden Aufgaben (Druckaufträge, Prozessverwaltung, Tastatureingaben usw.) Speicherverwaltung (Paging) 4 HERDT-Verlag

5 8.3 Listen (List) Einführung in die Datenstruktur Liste Eine Liste (engl. List) ist eine Datenstruktur, bei der die Elemente, auch Knoten (engl. node) genannt, durch Zeiger verkettet sind. Die Elemente der List haben alle denselben Datentyp. Jedes Element enthält einen Datenteil zum Speichern der eigentlichen Informationen und einen Adressteil, der einen Zeiger auf seinen Nachfolger, das nächste Element in der List, enthält. Eine Ausnahme bildet das letzte Element der Liste. Da es keinen Nachfolger hat, verweist sein Zeiger auf NULL. Eine List ist eine dynamische Datenstruktur, da sie durch Einfügen von Elementen wächst und durch Löschen von Elementen schrumpft. Für die Verwaltung der List wird ein Zeiger auf den Anfang der List benötigt. Arten von Listen Bei einfach verketteten Listen enthalten die Listenelemente einen Zeiger auf den jeweiligen Nachfolger. In doppelt verketteten Listen wird im Listenelement zusätzlich zum Zeiger auf den Nachfolger ein Zeiger auf den Vorgänger gespeichert. 8.4 Einfach verkettete Listen Aufbau einer einfach verketteten Liste Bei einfach verketteten Listen besitzen die Knoten einen Zeiger, der auf den Nachfolger des Elements verweist. Im Kopfteil (Header) der List wird ein Laufzeiger cursor abgelegt, der sich frei durch die List bewegen lässt. Die Angaben zu den Nummern von Elementen in den Schrittfolgen beziehen sich auf die jeweilige Beispielabbildung. HERDT-Verlag 5

6 Einen Knoten hinzufügen (insert) Datenteil Adressteil mit Zeiger auf den Nachfolger Setzen Sie den Laufzeiger auf den 2. Knoten. Nach dem 2. Knoten soll das neue Element eingefügt werden. Speichern Sie den Zeiger auf den Nachfolger des 2. Knotens in einer Hilfsvariablen. Erstellen Sie den neuen Knoten. Im Beispiel wird der neue Knoten zum 3. Knoten. Speichern Sie die Adresse des neuen Knotens im Zeiger auf den Nachfolger des 2. Knotens. Weisen Sie den zwischengespeicherten Zeiger dem Zeiger auf den Nachfolger des neuen Knotens zu. Setzen Sie den Laufzeiger auf die Position des eingefügten Knotens und füllen Sie den Datenteil des neuen Knotens. Einen Knoten löschen (delete) Setzen Sie den Laufzeiger auf den zu löschenden Knoten (im Beispiel 2. Knoten). Speichern Sie den Zeiger auf den Nachfolger des zu löschenden Knotens in einer Hilfsvariablen. Setzen Sie den Laufzeiger auf den Vorgänger des zu löschenden Knotens (TOP-Knoten). Weisen Sie dem Zeiger auf den Nachfolger des aktuellen Knotens (TOP-Knoten) den zwischengespeicherten Zeiger zu. Der zweite Knoten der ursprünglichen Liste wird gelöscht. 6 HERDT-Verlag

7 Beispiel für eine einfach verkettete Liste: SingleLinkedList.java Im folgenden Beispiel wird eine einfach verkettete List realisiert. Die Knoten können hier im Datenteil Informationen vom Datentyp String speichern und im Adressteil einen Verweis auf den nächsten Knoten. Dazu wird die Klasse Node definiert. class Node String data; Node next; Node (String data) this.data = data; Der Datentyp Node für die Knoten wird definiert., Der Knoten besteht aus einem Datenteil data und einem Adressteil next für den Verweis auf den nächsten Knoten oder null, falls kein nächster Knoten existiert. Der Konstruktor Node (vgl. Abschnitt 10.8) zur Erzeugung eines neuen Knotens wird erstellt. Die Liste wird über die Klasse SingleLinkedList bereit gestellt. Die Liste enthält einen Verweis auf den Anfang der Liste und verfügt über Funktionen zum Einfügen und Löschen eines Knotens sowie zum Drucken der Liste. public class SingleLinkedList Node head = null; public void insertnode(string data)... public void deletenode(string data)... public void printlist()... Im Beispiel werden Knoten nur am Anfang der Liste eingefügt: public void insertnode(string data) Node newnode = new Node(data); newnode.next = head; head = newnode; Der neue Knoten newnode wird mit dem gewünschten Datenteil erzeugt. Da der neue Knoten am Anfang der Liste eingefügt wird, wird der bisherige Listenanfang als Verweis auf den nächsten Knoten im neuen Knoten eingefügt. Der neue Knoten wird zum Listenanfang. HERDT-Verlag 7

8 Knoten mit bestimmtem Inhalt im Datenteil werden gesucht und gelöscht: public void deletenode(string data) Node cursor = head; Node prev = null; while (cursor!= null && cursor.data!= data) prev = cursor; cursor = cursor.next; if (cursor!= null) if (cursor == head) head = cursor.next; else prev.next = cursor.next;, cursor und prev werden benötigt, um den zu löschenden Knoten zu suchen und um sich dessen Vorgängerknoten zu merken. Solange die Liste noch nicht zu Ende ist und gleichzeitig der Datenteil des aktuellen Knotens mit dem Datenteil des zu löschenden Knotens nicht übereinstimmt, wird der aktuelle Knoten gespeichert und der nächste Knoten zum aktuellen Knoten. Falls ein übereinstimmender Datenteil gefunden wurde, die List also noch nicht zu Ende ist, wird geprüft, wo sich innerhalb der List der zu löschende Knoten befindet, und abhängig davon der Knoten gelöscht. Knoten mit bestimmtem Inhalt im Datenteil werden gesucht und ausgedruckt: public void printlist() Node cursor = head; int i = 0; if (cursor == null) System.out.println("Liste ist leer"); else if (cursor.next == null) System.out.println("Einziger Knoten der Liste - Inhalt : "+cursor.data); else while (cursor.next!= null) i++; System.out.println(i+". Knoten der Liste. Inhalt : "+cursor.data); cursor = cursor.next; System.out.println((i+1)+". Knoten der Liste. Inhalt : "+cursor.data); 8 HERDT-Verlag

9 Falls die List leer ist, erfolgt eine entsprechende Meldung. Enthält die List nur einen Knoten, wird dessen Datenteil ausgedruckt. Enthält die List mehr als einen Knoten, werden alle Knoten durchlaufen und der jeweilige Datenteil ausgedruckt. Der Programmcode zum Anwenden der einfach verketteten List steht in UseSingleLinkedList.java... SingleLinkedList mylist = new SingleLinkedList(); mylist.insertnode("london",1); mylist.insertnode("paris",2); mylist.insertnode("wien",3); mylist.deletenode(2); mylist.insertnode("berlin",2); mylist.insertnode("rom",3); mylist.insertnode("dublin",4); mylist.printlist();... Definition und Erzeugung einer einfach verketteten Liste Fügt ein Element in die Liste ein Löscht ein Element aus der Liste Druckt die Informationen der Elemente der Liste aus 1. Knoten der Liste. Inhalt : Dublin 2. Knoten der Liste. Inhalt : Rom 3. Knoten der Liste. Inhalt : Berlin 4. Knoten der Liste. Inhalt : Wien 5. Knoten der Liste. Inhalt : London Die Ausgabe des Programms Vorteile bei der Verwendung von einfach verketteten Listen Die Anzahl der Elemente ist nur durch den verfügbaren Speicherplatz begrenzt. Die List kann dynamisch erweitert bzw. verkleinert werden. Der Zugriff kann auf jedes Element zum Einfügen, Löschen oder Lesen erfolgen. Nachteile bei der Verwendung von einfach verketteten Listen Ein Zugriff auf den Vorgänger eines Elementes ist nur durch ein erneutes Durchlaufen der List von vorn möglich. Da das Durchlaufen der List nur über die Nachfolger erfolgt und nur in eine Richtung möglich ist, vom Anfang der List aus, ist das Verschieben von mehreren Elementen nur umständlich realisierbar. Das Arbeiten mit Listen ist im Vergleich zu Arrays relativ langsam, da nicht über einen Index zugegriffen werden kann. HERDT-Verlag 9

10 8.5 Doppelt verkettete Liste Aufbau einer doppelt verketteten List In doppelt verketteten Listen besitzt jeder Knoten zwei Zeiger. Ein Zeiger verweist auf den Vorgänger und der andere, wie bei einer einfach verketteten List, auf den Nachfolger. Der erste Knoten hat keinen Vorgänger und der letzte Knoten keinen Nachfolger, sodass die jeweiligen Zeiger auf NULL verweisen. Durch die doppelte Verkettung kann diese List in beide Richtungen durchlaufen werden. Zeiger auf Vorgänger Zeiger auf Nachfolger Einen Knoten hinzufügen Setzen Sie den Laufzeiger auf den 2. Knoten. Nach dem 2. Knoten soll das neue Element eingefügt werden. Speichern Sie den Zeiger auf den Nachfolger vom 2. Knoten in einer Hilfsvariablen. Speichern Sie den Zeiger auf den Vorgänger vom 3. Knoten in einer Hilfsvariablen. Erstellen Sie den neuen Knoten. Der neue Knoten wird zum 3. Knoten. Setzen Sie den Zeiger auf den Nachfolger des 2. Knotens auf den neuen Knoten (3.). Setzen Sie den Zeiger auf den Vorgänger des 4. Knotens auf den neuen Knoten (3.). Weisen Sie die zwischengespeicherten Zeiger auf Vorgänger und Nachfolger den entsprechenden Zeigern des eingefügten Knotens zu. Setzen Sie den Laufzeiger auf die Position des eingefügten Knotens und füllen Sie den Datenteil des neuen Knotens. 10 HERDT-Verlag

11 Einen Knoten löschen Setzen Sie den Laufzeiger auf den zu löschenden Knoten (im Beispiel 2. Knoten). Speichern Sie den Zeiger für den Vorgänger und den Nachfolger in Hilfsvariablen ab. Setzen Sie den Laufzeiger auf den nächsten Knoten (alter 3. Knoten). Weisen Sie dem Zeiger auf den Vorgänger den zwischengespeicherten Wert auf den Vorgänger zu. Setzen Sie den Laufzeiger auf den Vorgänger. Weisen Sie dem Zeiger auf den Nachfolger den zwischengespeicherten Wert auf den Nachfolger zu. Der zweite Knoten wird gelöscht. Vorteile bei der Verwendung von doppelt verketteten Listen Die doppelt verkettete Liste kann in beide Richtungen durchlaufen werden. Ein Zugriff auf das vorige und nachfolgende Element ist möglich. Die Anzahl der Elemente ist nur durch den verfügbaren Speicherplatz begrenzt. Die Liste kann dynamisch erweitert bzw. verkleinert werden. Der Zugriff kann auf jedes Element zum Einfügen, Löschen oder Lesen erfolgen. Eine Mehrfachverkettung der Liste, auch rückwärts, ist möglich. Nachteile bei der Verwendung von doppelt verketteten Listen Da das Durchlaufen der Liste nur über die Adressverweise erfolgt, ist das Verschieben von mehreren Elementen nur umständlich realisierbar. Das Arbeiten mit Listen ist im Vergleich zu Arrays relativ langsam. HERDT-Verlag 11

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

5.3 Doppelt verkettete Listen

5.3 Doppelt verkettete Listen 5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Lineare Listen (2) Doppelt verkettete Listen Ringlisten, Stapel, Schlangen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 175 Doppelt verkettete Listen

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

12.3 Ein Datenmodell für Listen

12.3 Ein Datenmodell für Listen Zweiter Versuch: Wir modellieren ein Element der Liste zunächst als eigenständiges Objekt. Dieses Objekt hält das gespeicherte Element. Andererseits hält das Element- Objekt einen Verweis auf das nächste

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung

Mehr

Aufgaben NF 11; Seite 1

Aufgaben NF 11; Seite 1 Aufgabe Ref 1: Gegeben ist die Klasse Schueler public class Schueler { private String name, vorname, kurs; // Konstruktor public Schueler(String n, String vn, String k) { name=n; vorname=vn; kurs=k; public

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel Ein Stack, auch Stapel oder Keller genannt, ist eine Datenstruktur, bei der die Elemente nur an einem Ende der Folge eingefügt bzw. gelöscht

Mehr

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Definition Feld. Definition Feld Organisatorisches Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 208 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München TUMonline-Einträge: Vorlesung https://campus.tum.de/tumonline/wblv.

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges

Mehr

Logische Datenstrukturen

Logische Datenstrukturen Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse

Mehr

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Nachtrag: Vergleich der Implementierungen von Stack

Nachtrag: Vergleich der Implementierungen von Stack Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als

Mehr

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011 Kompaktkurs Einführung in die Programmierung Klausur Seite 1/10 Name, Vorname, Unterschrift: Matrikelnummer: Wichtig: Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Motivation I public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler= zaehler; this.nenner = nenner; Konstruktor zum Initialisieren der Werte

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

7. Verkettete Strukturen: Listen

7. Verkettete Strukturen: Listen 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Klassen und Abstrakte Datentypen Abstrakte Datentypen (ADT) Beschreibung der Datentypen nicht auf Basis ihrer Repräsentation, sondern auf Basis ihrer Operationen und

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Feld als sequentielle Liste. Definition Feld

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Feld als sequentielle Liste. Definition Feld Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 205 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

Mehr

Konkatenation zweier Listen mit concat

Konkatenation zweier Listen mit concat Ein Datenmodell für Listen Konkatenation zweier Listen mit concat Was ist an der Konkatenation etwas unschön? Man muss die vordere Liste einmal durchgehen, um den letzten Nachfolger (urspr. null zu erhalten,

Mehr

Listen. M. Jakob. 20. September Gymnasium Pegnitz

Listen. M. Jakob. 20. September Gymnasium Pegnitz Listen M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis 1 Hinführung: Wartenschlangen (6 Std.) 2 Grundprinzip von Listen Rekursion (10 Std.) 3 Die einfach verkettete Liste als Kompositum

Mehr

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis Grundprinzip von Rekursion (10 Std.) Die einfach verkettete Liste als Kompositum (10 Std.) Klasse LISTENELEMENT? Entwurfsmuster Kompositum

Mehr

Stapel (Stack, Keller)

Stapel (Stack, Keller) Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Ordnung im Materiallager: Datenstrukturen II. Suchen und Sortieren im Array Verkettete Listen Rekursion

Ordnung im Materiallager: Datenstrukturen II. Suchen und Sortieren im Array Verkettete Listen Rekursion Ordnung im Materiallager: Datenstrukturen II Suchen und Sortieren im Array Verkettete Listen Rekursion Indizierter Datenbehälter Modell: Parkhaus, nummerierte Plätze interface FuhrparkIndex { // indiziert

Mehr

3 Dynamische Datenstrukturen

3 Dynamische Datenstrukturen 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 204 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 Elementare Datenstrukturen) Prof. Dr. Susanne Albers Lineare Listen (1) Lineare Anordnung von Elementen eines Grundtyps (elementarer Datentyp

Mehr

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen Datentypen elementare strukturierte skalare reelle statische dynamische int real float list homogen set inhomogen record Der elementare Datentyp nat bestehend aus einer Objektmenge und den darauf definierten

Mehr

Fallstudie: Online-Statistik

Fallstudie: Online-Statistik Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...

Mehr

Programmieren 2 Übung Semesterwoche 2

Programmieren 2 Übung Semesterwoche 2 Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

Informatik II Übung, Woche 14

Informatik II Übung, Woche 14 Giuseppe Accaputo 7. April, 2016 Plan für heute 1. Java Klassen Beispiel: Implementation eines Vorlesungsverzeichnis (VVZ) 2. Informatik II (D-BAUG) Giuseppe Accaputo 2 Java Klassen Beispiel: Implementation

Mehr

ADT: Verkettete Listen

ADT: Verkettete Listen ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Abstrakte Datentypen und deren Implementierung in Python

Abstrakte Datentypen und deren Implementierung in Python Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)

Mehr

Abiturprüfung Informatik, Grundkurs

Abiturprüfung Informatik, Grundkurs Seite 1 von 6 Abiturprüfung 2008 Informatik, Grundkurs Aufgabenstellung: Bei Warteschlangen kommt es häufig vor, dass einige Elemente aus berechtigten Gründen nicht am Ende der Schlange eingefügt werden

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 11. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-4 Zur Erinnerung Datenstruktur:

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Einfügen immer nur am Kopf der Liste Löschen auch nur an einem Ende (2 Möglichkeiten!)

Einfügen immer nur am Kopf der Liste Löschen auch nur an einem Ende (2 Möglichkeiten!) Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer

Mehr

Algorithmen und Datenstrukturen Abstrakte Datentypen. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen Abstrakte Datentypen. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Abstrakte Datentypen M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Die abstrakten Datentypen Stapel, Warteschlange und Liste sind bekannt und können angewendet werden Listen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 6 (14.5.2014) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Frank Heitmann heitmann@informatik.uni-hamburg.de 4. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Stack. Queue. pop() liefert zuletzt auf den Stack gelegtes Element und löscht es push( X ) legt ein Element X auf den Stack

Stack. Queue. pop() liefert zuletzt auf den Stack gelegtes Element und löscht es push( X ) legt ein Element X auf den Stack Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer

Mehr

Einführung in die Programmierung für NF MI. Übung 04

Einführung in die Programmierung für NF MI. Übung 04 Einführung in die Programmierung für NF MI Übung 04 Inhalt Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 04 2 Arrays Arrays repräsentieren Reihungen von Objekten, z.b. Variablen

Mehr

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 10. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 10. Mai 2013 Programmieren II 11. Übungsblatt Hinweis: Dieses Übungsblatt enthält die zweite Pflichtaufgabe.

Mehr

Einfach verkettete Liste

Einfach verkettete Liste 5. Listen Verkettete Listen Einfach verkettete Liste Für jedes einzelne Element der Liste wird ein Hilfsobjekt erzeugt. Jedes Hilfsobjekt enthält zwei Instanzvariablen: den zu speichernden Wert bzw. einen

Mehr

B2.1 Abstrakte Datentypen

B2.1 Abstrakte Datentypen Algorithmen und Datenstrukturen 21. März 2018 B2. Abstrakte Datentypen Algorithmen und Datenstrukturen B2. Abstrakte Datentypen B2.1 Abstrakte Datentypen Marcel Lüthi and Gabriele Röger B2.2 Multimengen,

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Kapitel 4: Datentyp Keller und Schlange

Kapitel 4: Datentyp Keller und Schlange Kapitel 4: Datentyp Keller und Schlange Keller (Stack) Schlange (Queue) 4-1 Definition Keller und seine Operationen Ein Keller (engl. Stack; Stapel) ist eine endliche Menge von Elementen mit einer LIFO-Organisation

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen Martin Dietzfelbinger April 2010 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 2 Datentyp

Mehr

4.2 Daten und Datenstrukturen

4.2 Daten und Datenstrukturen 4.2 Daten und Datenstrukturen Daten Fundamentale Objekte, die in der Rechenanlage erfasst gespeichert ausgegeben (angezeigt, gedruckt) bearbeitet gelöscht werden können. Beispiele: Zahlen, Zeichenfolgen

Mehr

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 6 Prof. R. Westermann, A. Lehmann, R.

Mehr

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Listen. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.  WS 07/08 Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ini.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Listen kennenlernen Listeniteratoren verstehen

Mehr

Die Klasse string Verfasser: Christian Bartl

Die Klasse string Verfasser: Christian Bartl Die Klasse string Verfasser: Index 1. Allgemein... 3 2. Eingabe von Strings... 3 3. Ausgabe von Strings... 4 4. Länge eines Strings... 4 5. Durchlaufen aller Zeichen eines Strings... 4 6. Kopieren von

Mehr

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter

Mehr