Vorlesung Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Datenstrukturen"

Transkript

1 Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148

2 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges Element eines Feldes ist sehr schnell möglich O(1). Nachteile Die Größe eines Feldes muss in der Regel vor dem Ablauf eines Programms feststehen. Die Elemente des Feldes sind im Hauptspeicher linear und im gleichen Abstand angeordnet. Konsequenz Einfüge- und Löschoperationen verlangen die Verschiebung vieler Feldelemente O(n) Einfügen ist aufgrund der festen Feldgröße generell problematisch. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 149

3 Lineare Listen Vorteil des Listenkonzepts Listen sind eine dynamische Datenstruktur, d.h. Elemente können nach Belieben (dynamisch) eingefügt oder wieder entfernt werden. Funktionsprinzip Elemente werden nicht mehr über einen Indexwert adressiert, sondern jedes Element merkt sich seinen direkten Nachfolger in der Liste. Der Begriff linear bedeutet, dass ein Element einer Liste genau einen Nachfolger besitzt. Realisierung Der Verweis auf den Nachfolger wird mit Hilfe des Zeigerkonzepts ermöglicht: Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 150

4 Typ eines Listenelements Anforderungen an ein Listenelement Jedes Listenelement verweist auf seinen Nachfolger. Um weitere Daten (die eigentlichen Informationen) in einem Listenelement speichern zu können, muss es folglich ein zusammengesetzter Datentyp sein, d.h. ein Listenelement muss mindestens zwei Komponenten enthalten: eine Komponente data beinhaltet die zu speichernden Daten eine Komponente next beinhaltet den Verweis auf den Nachfolger des Elements Typ eines Listenelements () struct { Elementtyp data; * next; }; Konstruktion einer Liste Wir untersuchen drei Varianten (V1-V3) data next Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 151

5 Listenaufbau und Listenverwaltung Drei Varianten der Listenerzeugung V1: Navigation ab Listenkopf V2: Merken des Listenendes V3: Einfügen am Listenbeginn Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 152

6 V1: Navigation ab Listenkopf Listenkopf Das erste zu erzeugende Listenelement wird auch Kopf der Liste oder Kopfelement genannt, es dient zur späteren Adressierung der gesamten Liste. Erzeugen des Listenkopfs 1. Wir benötigen eine Zeigervariable für das Kopfelement. * head; 2. Wir stellen den benötigten Speicher für das Kopfelement head = new ; zur Verfügung und weisen dessen Adresse der Zeiger- variablen aus 1. zu. 3. Um das Listenende identifizieren zu können, muss das head->next = 0; letzte Element der Liste (das ist zu Beginn das Kopfelement) markiert werden. Diese Markierung erfolgt durch Zuweisen des Nullzeigers an die Nachfolgerkomponente. head data next 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 153

7 V1: Anhängen eines Listenelements Ablauf 1. Bereitstellen eines Speicherbereiches für das neue * elem = new ; Listenelement. 2. Zuweisen des Speicherbereichs an die Nachfolger- head->next = elem; komponente des Kopfelements (also des Zeigers auf die Liste). 3. Endmarkierung der Liste durch Zuweisen des Null- head->next->next = 0; zeigers an die Nachfolgerkomponente des ange- hängten Listenelements. head data next data next 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 154

8 V1: Anhängen eines 2. Listenelements Ablauf 1. Bereitstellen eines Speicherbereiches für das neue * elem = new ; Listenelement. 2. Zuweisen des bereitgestellten Speicherbereichs an die head->next->next = elem; Nachfolgerkomponente des bisherigen letzten Listen- elements (das seinerseits der Nachfolger des Kopfele- ments ist). 3. Endmarkierung der Liste durch Zuweisen des Nullzeigers head->next->next->next = 0; an die Nachfolgerkomponente des angehängten Listen- elements (das seinerseits der Nachfolger des Nachfolgers des Kopfelements ist). head data next data next data next 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 155

9 V1: Anhängen weiterer Listenelemente Problem Jedes Anhängen eines weiteren Elements an die Liste erfordert wiederum eine Navigation durch die gesamte existierende Liste O(n) je Einfügeoperation Lösungsidee Wir merken uns jeweils das letzte Element der Liste und verknüpfen es bei einer weiteren Anhängeoperation mit dem gerade neu erzeugten Listenelement Variante V2 Alternative Spielt die Reihenfolge des Anhängens (die Ordnung in der Liste) keine Rolle können wir neue Listenelemente auch am Anfang der Liste einfügen. Das jeweils zuletzt eingefügte Listenelement stellt dann den Kopf der Liste dar und verweist auf das als vorletztes eingefügte Element Variante V3 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 156

10 V2: Merken des letzten Listenelements Erzeugen des Listenkopfs geschieht analog V1, zusätzlich benötigen wir jedoch noch eine zusätzliche Zeigervariable last, die sich jeweils das zuletzt eingefügte Element merkt nach Erzeugen des Listenkopfes muss last auf das Kopfelement (das zuletzt erzeugte Listenelement) verweisen * temp = new ; // temp zeigt auf das neue Listenelement temp->next = 0; // erzeugtes Listenelement ist Listenende * head = temp; // erzeugtes Listenelement ist Listenkopf * last = head; // Listenkopf ist letztes Listenelement head last data next 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 157

11 V2: Anhängen eines Listenelements Ablauf 1. Reservieren eines Speicherbereichs für das neue Listenelement temp = new ; 2. Endmarkierung der Liste durch Zuweisen des Nullzeigers an die temp->next = 0; Nachfolgerkomponente des erzeugten Listenelements 3. Zuweisen der Adresse des gerade erzeugten Listenelements an last->next = temp; die Nachfolgerkomponente des zuvor in die Liste eingefügten Elements (last) 4. Merken des erzeugen Listenelementes durch Aktualisieren von last = temp; last Im Gegensatz zu V1 gilt das beschriebene Verfahren pauschal für das Anhängen beliebig vieler weiterer Listenelemente Laufzeit O(1) je Element head data next data next 0 last Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 158

12 V3: Einfügen am Listenanfang Erzeugen des Listenkopfs Geschieht wieder analog Variante V1. Beachte Der Listenkopf wird (zumindest so lange nur neue Listenelemente nach V3 eingefügt werden) immer das letzte Element der Liste bleiben. Deshalb muss nur das Kopfelement nach seiner Erzeugung einmalig als Listenende markiert werden. * temp = new ; temp->next = 0; * head = temp; head data next 0 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 159

13 V3: Einfügen am Listenbeginn Ablauf Nach Erzeugen eines neuen Listenelements muss dieses mit dem bisherigen Listenkopf verbunden werden. Den neuen Listenbeginn stellt das erzeugte Listenelement dar. Anmerkungen wir verwalten im Gegensatz zu V2 unsere Liste nun wieder nur mit einer Zeigervariablen (head) das Listenende muss nicht mehr markiert werden Beachte: Die Elemente werden in umgekehrter Reihenfolge einsortiert temp = new ; temp->next = head; head data next data next 0 head = temp; Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 160

14 Operationen auf Listen Durchmustern einer Liste Ausgabe aller Elemente Suchen eines Elements Einfügen eines Elements Löschen eines Elements Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 161

15 Durchmustern einer Liste Problematik Wir wollen uns nun mit den Möglichkeiten beschäftigen, den Inhalt einer Liste auszuwerten. Dies beinhaltet unter anderem Fragen nach der Ausgabe aller Elemente oder der Suche eines bestimmten Listenelements. Voraussetzung Unabhängig von den drei kennengelernten Varianten zum Aufbau einer Liste benötigen wir als Voraussetzung für den Listendurchlauf nur einen Zeiger auf den Listenanfang (head) (und natürlich eine lineare Liste). head data? next data? next data? next 0... Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 162

16 Erzeugen einer Beispielliste nach V2 * head = new ; head->data = 0; * last = head; for (int i = 1; i < 10; i++) { * temp = new ; temp->data = i; last->next = temp; last = temp; } last->next = 0; struct { int data; // Neuer Listenkopf * next; }; // Erzeugen des Listenrumpfes // Hänge erzeugtes Element an Liste an // Merke erzeugtes Listenelement // Kennzeichnung des Listenendes Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 163

17 Ausgabe aller Elemente Eingabe Zeiger auf den Listenkopf (head) Ausgabe Inhalt der data - Komponente aller Listenelemente auf dem Bildschirm Algorithmus void ausgabe(* head) { * temp = head; while ( temp ) { // leere Liste ist generelles Abbruchkriterium printf("%d ", temp->data); temp = temp->next; } } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 164

18 Suchen eines Elements Eingabe Zeiger auf den Listenkopf (head) und die zu suchende Information (search) Ausgabe Kürzeste Entfernung des gesuchten Werts zum Listenkopf: -1: Wert nicht in Liste enthalten, 0: Wert im Listenkopf gefunden, >0: Knotenanzahl vom Listenkopf bis zum gefundenen Element int suche(* head, int search) { * temp = head; int distance = 0; while ( temp ) { if (temp->data == search) return distance; temp = temp->next; distance++; } return -1; } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 165

19 Einfügen in eine Liste Wir haben bereits bei der Listenkonstruktion neue Elemente in eine Liste eingefügt. Diese drei Einfügeoperationen sind jedoch als Spezialfälle anzusehen: 1. Einfügen in eine leere Liste (Erzeugen des Listenkopfs) 2. Einfügen (Anhängen) an das Listenende (V1, V2) 3. Einfügen an den Listenanfang (V3) Nun wollen wir die noch verbleibende Situation untersuchen: 4. Einfügen in den Listenrumpf. Ein mögliches Szenario dafür wäre das geordnete Einfügen eines neuen Listenelements in eine sortierte Liste. Merke! Beim Einfügen in eine Liste sind vier Situationen zu unterscheiden: Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 166

20 Einfügen in den Listenrumpf (1) Voraussetzung Um ein neues Listenelement ordnungsgemäß in eine Liste einfügen zu können, muss die Einfügeposition bekannt sein, also nach welchem und vor welchem Listenelement das neue Element einzusortieren ist. Da die Kenntnis des Vorgängers die Kenntnis des Nachfolgers impliziert, müssen wir nur das Vorgängerelement prev des einzufügenden Listenelements elem bestimmen. Diese Funktionalität kann z.b. mit einer entsprechend modifizierten Variante der schon bekannten Suchfunktion realisiert werden. elem data 6 next prev data 4 next data 8 next... Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 167

21 Einfügen in den Listenrumpf (2) Aufgabe Die drei Listenelemente müssen derart verkettet werden, dass die gewünschte Ordnung erfüllt ist, d.h. 1. prev als neuer Vorgänger des einzufügenden Elements muss auf elem als Nachfolger verweisen 2. elem muss auf den ursprünglichen Nachfolger von prev verweisen Ergebnis Listenelement elem ist ordnungsgemäß in die Liste einsortiert elem->next = prev->next; prev->next = elem; elem data 6 next prev data 4 next data 8 next... Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 168

22 Einfügen - Laufzeitanalyse Einfügen in eine leere Liste (V1-V3) O(1) Einfügen (Anhängen) an das Listenende O(1) bei bekanntem letzten Element (V2) O(n) sonst (V1) Einfügen am Listenanfang (V3) O(1) Einfügen in den Listenrumpf O(1) bei bekanntem Vorgängerelement O(n) sonst Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 169

23 Löschen eines Listenelements Situationsanalyse Wie beim Einfügen müssen auch beim Löschen vier Situationen unterschieden werden: Ablauf Liste ist leer Löschen des Kopfelements Löschen eines Rumpfelements Löschen des letzten Listenelements Das Löschen eines Listenelements verlangt im Wesentlichen zwei Aktionen: 1. Verkettung des Vorgängers des zu löschenden Listenelements mit seinem Nachfolger Logisches Löschen 2. Freigabe des Speicherplatzes des aus der Liste entfernten Elements Physisches Löschen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 170

24 Löschen - Funktionsdefinition Funktionsparameter Eingabe: Zeiger auf den Kopf der Liste head und auf das zu löschende Listenelement elem Ausgabe: Zeiger auf den Kopf der Liste (da der alte Kopf gelöscht werden könnte) Bedingung für den Algorithmus Wenn head!= 0 und elem!= 0, dann muss elem in der Liste head enthalten sein. Ablauf 1. Bestimmen des Vorgängers von elem 2. Bestimmen des Nachfolgers von elem 3. Logisches Löschen von elem durch Verknüpfung von Vorgänger mit Nachfolger 4. Physisches Löschen von elem durch Freigabe des reservierten Speicherplatzes Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 171

25 Löschen eines Elements * remove ( * head, * elem ) { if ( head==0 elem==0 ) // Abbruch bei leerer Liste oder leerem Element return 0; else if ( head == elem ) // Spezialfall Kopfelement löschen head = elem->next; else { // Finden des Vorgängers und Verknüpfen * prev; // von Vorgänger und Nachfolger * temp = head; while ( temp->next!= elem ) temp = temp->next; prev = temp; prev->next = elem->next; // beinhaltet Spezialfall letztes Element löschen } // denn pred zeigt dabei auf elem->next (==0) delete elem; // Physische Freigabe des Speicherplatzes!!! return head; } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 172

26 Löschen - Laufzeitanalyse Löschen einer leeren Liste O(1) Löschen des Kopfelements O(1) Löschen des letzten Listenelements O(1) bei bekanntem Vorgänger O(n) sonst Löschen eines Rumpfelements O(1) bei bekanntem Vorgänger O(n) sonst Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 173

27 Ende der Vorlesung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 174

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

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014 17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Inhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2.

Inhaltsverzeichnis. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf. Druckmanager allgemein 2. Praktikum Algoritmen und Datenstrukturen WS2004/2005 Paul Litzbarski Stefan Nottorf Inhaltsverzeichnis Druckmanager allgemein 2 Design 2 Druckauftrag 3 Liste 4 ListenEintrag 6 GUI 7 1 Druckmanager : allgemein

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

Programmieren für Ingenieure Sommer 2015. Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Programmieren für Ingenieure Sommer 2015. Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Ein Rechner Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Rechner sind überall Ihr Rechner

Mehr

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1 Systeme 1 Kapitel 3 Dateisysteme WS 2009/10 1 Letzte Vorlesung Dateisysteme Hauptaufgaben Persistente Dateisysteme (FAT, NTFS, ext3, ext4) Dateien Kleinste logische Einheit eines Dateisystems Dateitypen

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

Anwendungsbeschreibung des ReNoStar-Druckers

Anwendungsbeschreibung des ReNoStar-Druckers Anwendungsbeschreibung des ReNoStar-Druckers Stand September 2007 Inhalt Inhalt... 2 Anforderung aus der Praxis... 3 Die ReNoStar Drucker-Leiste... 3 Erstellen einer Vorlage... 3 Reihenfolge der Vorlagen

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Praktikum Betriebssysteme 1. Aufgabe (1)

Praktikum Betriebssysteme 1. Aufgabe (1) FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

8 Baum in perfekter Komposition

8 Baum in perfekter Komposition 8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Klassendiagramme weiterführende Konzepte Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Relationen-Algebra und Persistenz Teil I

Relationen-Algebra und Persistenz Teil I Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt FLOBs DBArrays Attributsdatentypen Folie 2 Bisher:

Mehr

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte

Mehr

11. Übung Informatik II - Operatorfunktionen

11. Übung Informatik II - Operatorfunktionen Stand: 26. Juni 2015 Inhalt 1 2 3 Übersicht 1 2 3 Warum Operatoren überladen? Großteil der Operatoren (Arithmetik, Logik, Vergleiche) nur für Standarddatentypen (Zahlen, Zeiger) implementiert vergleichbare

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

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 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java:

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java: Institut für Datenbanken und Informationssysteme Prof. Dr. M. Reichert, M. Predeschly, J. Kolb Lösung für Übungsblatt 1 Aufgabe 1-1: Fragen zu FAT (File Allocation Table) 1. Im Bootsektor der Festplatte

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Suchen und Sortieren

Suchen und Sortieren (Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Java. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig.

Java. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig. Komplexität von Algorithmen (Folie 34, Seite 18 im Skript) Wir verwenden oft für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig. Lernziel sind die einzelnen

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am 1 Aufgabe 1 a) procedure FeldMinMax(inFeld: tfeld; var outmin, outmax: integer); { Ermittelt den kleinsten sowie den größten aller Werte in infeld und gibt diese in den Ausgabeparametern outmin bzw. outmax

Mehr

Abschnitte. Abschnittswechsel einfügen

Abschnitte. Abschnittswechsel einfügen Abschnitte Word 2010 Advanced Ein Abschnitt ist eine Einheit innerhalb eines Dokuments, der sich durch sein Layout vom Rest des Dokuments unterscheidet. Standardmäßig besteht das Dokument aus einem Abschnitt.

Mehr

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen Inhalte Informatik I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen II.0 Grundlegende Programmstrukturen und Algorithmen Sortier- und Suchalgorithmen auf Arrays

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen V14 1 / 30 Informationsverarbeitung im Bauwesen Markus Uhlmann Institut für Hydromechanik WS 2009/2010 Bemerkung: Verweise auf zusätzliche Information zum Download erscheinen in dieser Farbe V14 2 / 30

Mehr

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write Thomas Maier Proseminar: Ein- / Ausgabe Stand der Wissenschaft Seite 1 von 13 Gliederung 1. Hashtabelle 3 2.B-Baum 3 2.1 Begriffserklärung 3 2.2

Mehr

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Dateiorganisation und Zugriffsstrukturen

Dateiorganisation und Zugriffsstrukturen Dateiorganisation und Zugriffsstrukturen Prof. Dr. T. Kudraß 1 Mögliche Dateiorganisationen Viele Alternativen existieren, jede geeignet für bestimmte Situation (oder auch nicht) Heap-Dateien: Geeignet

Mehr

Eigene Seiten erstellen

Eigene Seiten erstellen PhPepperShop Anleitung Datum: 3. Oktober 2013 Version: 2.1 Eigene Seiten erstellen Eigene Inhalte / CMS Glarotech GmbH Inhaltsverzeichnis Anleitung zur Erstellung von eigenen Inhalten/Links...3 1. Anmeldung

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr