Vorlesung Datenstrukturen
|
|
- Ingelore Blau
- vor 6 Jahren
- Abrufe
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 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Mehr17.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
MehrProgrammierung 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
MehrDer 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
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
MehrInformatik 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:
MehrDr. 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
MehrII. 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
MehrInhaltsverzeichnis. 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
Mehr13. 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),
MehrWiederholung 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
MehrKapitel 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
Mehr3. Ü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
Mehr1. 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
Mehr11.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
MehrInformatik 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
MehrEinfü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
MehrLö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
MehrDatenstruktur, 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)
MehrKlausur 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
MehrProgrammieren 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
MehrSysteme 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
Mehr9.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
MehrDatenstrukturen & 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
MehrDatenstrukturen 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
MehrRepetitorium 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
MehrEinfü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
MehrProgrammiertechnik 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,...
MehrGrundlagen 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
MehrAlgorithmik 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 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
MehrOPERATIONEN 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:
MehrAbschnitt: 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
MehrFolge 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
MehrInformatik 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
MehrEinfü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
MehrBeispiellö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
MehrReihungen. 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
MehrProseminar 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
MehrUntersuchen 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
MehrObjektorientierte 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
MehrAlgorithmen 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
MehrStudentische 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
MehrGrundlagen 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:
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)
MehrAnwendungsbeschreibung 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
MehrSortierverfahren 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
MehrSuchbä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
Mehr13 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,
MehrGrundkonzepte 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.
MehrEine 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
MehrPraktikum 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
MehrDatenstrukturen 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
Mehr8 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
MehrProgrammiertechnik 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
Mehr12. 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
MehrJAVA - 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
Mehr14. 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).
MehrPass 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
MehrBinä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) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
MehrSoftware 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
Mehr1 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
Mehr2.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
MehrDie 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
MehrRelationen-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:
MehrVerkettete 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
Mehr11. Ü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
MehrProgrammieren 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
MehrBinä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
Mehr2. 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)
MehrMySQL-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
MehrAlgorithmen 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
MehrAVL-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
MehrDr. 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
MehrVorlesung 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?
MehrInstitut 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.
MehrSpeicherstrukturen. 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
MehrBä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
MehrSuchen 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
MehrSuchen 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
MehrDatenstrukturen & 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
MehrTutorium 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
MehrKap. 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:
MehrJava. 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
MehrAlgorithmen & 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
MehrBä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
MehrHEUTE. 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
MehrMusterlö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
MehrKurs 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
MehrAbschnitte. 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.
MehrInhalte 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
MehrInformationsverarbeitung 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
MehrB-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
MehrEinfü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
MehrTheorie 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
MehrDateiorganisation 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
MehrEigene 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
MehrAufgaben 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