7. Dynamischer Speicher und Datenstrukturen
|
|
- Klemens Egger
- vor 6 Jahren
- Abrufe
Transkript
1 7. Dynamischer Speicher und Datenstrukturen Inhalt: 7.1 Dynamisch angefrderter Speicher 7.2 Datenstrukturen Die Flien basieren zum Teil auf einen Fliensatz vn R. Grßmann und T. Wiedemann 1 Dynamische Speicherstrukuren (1) Unter dynamischen Speicherstrukturen versteht man die Bildung neuer Speicherstrukturen auf der Basis vn Standarddatentypen und deklarierten Strukturen zur Laufzeit. Es wird Speicherplatz zur Laufzeit der Halde (Heap) entnmmen, damit ein neues Objekt initialisiert und mit bereits vrhandenen Objekten in der Speicherstruktur verbunden. Ebens können auch zur Laufzeit Objekte aus der Speicherstruktur herausgelöst werden und deren Speicherplatz wieder freigegeben werden. Im Gegensatz werden die bisher benutzen Variablen und Felder als statische Speicherstrukturen angesehen. Die Sichtbarkeit und der belegte Speicherplatz wird durch ihre Deklaratin im glbalen Kntext der innerhalb Funktinen bestimmt. 2
2 Dynamische Speicherstrukuren (2) Zur Realisierung slcher dynamischer Strukturen werden zwei Technlgien benötigt: 1. Die dynamische Speicherallkatin und freigabe im Heap und 2. Die Verwendung der Zeigertechnik zum dynamischen Herstellen und Lösen vn Verbindungen vn Objekten und der Datenstruktur Die interne Organisatin der Daten (als w welches Element im Speicher steht und wie es mit den anderen Elementen in Beziehung gesetzt wird) wird durch Datenstrukturen beschrieben. 3 Dynamische Speicherstrukturen (3) Die dynamische Speicherallkatin und freigabe im Heap wird in C mit den Funktinen vid *mallc(size_t size); // gibt die Anfangsadr. des // allkierten Bereichs zurück vid free(vid *addresse); durchgeführt, die in <allc.h> zu finden sind. Es werden size Bytes auf dem Heap allkiert und die Adresse dieses Speicherbereiches zurückgegeben. Ist der Rückkehrwert NULL, ist nicht genügend Speicher vrhanden. Ist die genaue Bytezahl bekannt, kann diese direkt als Argument übergeben werden, snst empfiehlt sich die Verwendung vn sizef(x), die die ntwendige Bytezahl für das Objekt x ermittelt. Bei der Speicherfreigabe mit free ist nur die Heapadresse des Speicherbereichs anzugeben. 4
3 Dynamisches Feld (1) Bei manchen Anwendungen ist die Anzahl der zu verarbeitenden Elemente nicht bekannt und kann je nach Eingabewerten stark variieren. Felder mit einer maximalen Anzahl vn Elementen sind dann ungünstig. Lösung: Ein dynamisches Feld, das sich mit Mitteln der dynamischen Speicherverwaltung (mallc, reallc, free) der benötigten Anzahl vn Elementen anpasst. Startzustand, mit 3 Elementen als Reserve Elemente Zustand, nach Einfügen vn 2 Elementen Elemente Zustand, nach Einfügen vn 3 weiteren Elementen Elemente Zustand, nach Austragen vn 4 Elementen Elemente 5 Dynamisches Feld (2) Knstanten und Variablen zur Verwaltung: #define N_START 3 #define N_DELTA 5 unsigned int n_allcated=0, n_elements=0; Anfang: Allkieren vn N_START Elementen Setzen vn n_allcated = N_START feld = (elem_typ*) mallc(sizef(elem_typ)* N_START); if (feld==null) { /* Fehlerbehandlung */} n_allcated = N_START; 6
4 Dynamisches Feld (3) Einfügen eines neuen Elements am Ende: Prüfen, b ausreichend Speicher allkiert ist ggf. dynamisches Vergrößern des Feldes und Anpassen der Variable n_allcated Einfügen des Elements in feld[n_elements] Erhöhen vn n_elements um 1 if (n_elements+1 > n_allcated) { feld = reallc(feld, sizef(element_typ) * (n_allcated + N_DELTA)); if (feld==null) { /* Fehlerbehandlung */ } n_allcated = n_allcated + N_DELTA; } feld[n_elements] = neues_element; n_elements = n_elements+1; 7 Dynamisches Feld (4) Ausgliedern eines Elements an Psitin p (0 p<n_elements): Verschieben der Feldelemente ab Psitin p+1 um eine Stelle nach links (kleinerer Index) Verringern vn n_elements um 1 Prüfen, b n_elements < n_acclcated N_DELTA, wenn ja, dann Verkleinern des Feldes mittels reallc() fr (i=p+1;i<n_elements; i++) feld[i-1] = feld[i]; n_elements = n_elements 1; if (n_elements < n_allcated N_DELTA) { feld = reallc(feld, sizef(element_typ) * (n_allcated - N_DELTA)); n_allcated = n_allcated N_DELTA; } 8
5 Datenstrukturen Für viele Anwendungen ist die Wahl einer geeigneten Datenstruktur eine wesentliche Entscheidung Frage: Wie rganisiert man die Daten im Speicher, damit sie günstig verarbeitet werden können. Günstig kann heißen: Prgrammcde zur Verarbeitung einfach und kurz wenig Anweisungen (schneller, weniger Przessrbelastung) inhaltlich verwandte Elemente stehen nah beieinander Beispiele: Lineares Feld mit srtierten Elementen, z.b. für Telefnbucheinträge Baumstruktur mit Verweisen auf Vater- und Mutter-elemente zur Nachbildung vn Stammbäumen Netzstruktur, z.b. mit Struktur einer elektrischen Schaltung 9 Zeigertechnik bei linearen Listen Die Verwendung der Zeigertechnik zum dynamischen Herstellen und Lösen vn Verbindungen vn Objekten und der Datenstruktur erfrdert in C den Einsatz des Verbundtyps struct{...}, da die Zeiger in das zu verbindende Objekt einbezgen werden müssen. Da das Objekt selbst eine Struktur ist, muss demzuflge der Zeiger auf die nächste Struktur auch vm gleichen Strukturtyp sein, z.b. struct list_element { flat f; // weitere Elemente struct list_element *next; }; // Zeiger auf Nachflger-Element 10
6 Lineare Listen Beispiel: Objekt 1 Objekt 3 Objekt 2 Listenelement Durch einen Verbund (struct) müssen eigentliches und als Zeiger vereint werden. Objekt struct listelem { flat t; char psitin[strlen]; Objekt struct listelem *next; }; typedef struct listelem list_elem_t; list_elem_t *anker = NULL; 11 Lineare Liste - Definitin Eine Liste ist eine verkettete Flge vn Elementen (Objekten), die aus Standarddatentypen zusammengesetzt sind und für die gilt: 1. Es gibt genau ein Listenelement, das keinen Vrgänger hat und Listenanfang heißt. Auf dieses Element zeigt der Listenanker. 2. Es gibt genau ein Listenelement, das keinen Nachflger hat und Listenende heißt. 3. Die übrigen Listenelemente haben genau einen Vrgänger und genau einen Nachflger. 4. Alle Listenelemente sind vm Listenanker aus durch Nachflgerbildung in endlich vielen Schritten erreichbar. 12
7 Listen Objekt 1 Objekt 2 Objekt 3 NULL- Zeiger Objekt 1 ist der Listenanfang und Objekt 3 das Listenende. Die Objekte enthalten die Nutzdaten, die wiederum aus mehreren Elementen bestehen können. Als zusätzliches charakteristisches Element tritt ein Zeiger hinzu, der die Nachflgerelatin darstellt. Das Listenende enthält den NULL-Zeiger. Die Anzahl der Objekte wird als Länge der Liste bezeichnet. Da die Nachflgerelatin eine Ordnungsrelatin induziert, spricht man vn linearen dynamischen Datenstrukturen. Hier: einfach verkettete Liste es gibt auch dppelt verkettete Listen (vrwärts und rückwärts verkettet) 13 Operatinen mit Listen Als typische Operatinen mit Listen gelten: 1. Das Erzeugen eines Listenelementes (create) 2. Das Löschen eines Listenelementes (bfree) 3. Das Einketten eines Listenelementes an eine festzulegende Psitin (insert) 4. Das Anhängen eines Listenelementes als neues letztes Element (append) 5. Das Ausketten eines bestimmten Listenelementes (dequeue) 6. Das Suchen eines Listenelementes (find) 7. Das Traversieren einer Liste (traverse) 14
8 Erzeugen eines Listenelementes (create) list_elem_t *create(list_elem_t x) { list_elem_t *neu; neu= (list_elem_t*) mallc(sizef x); //Reservieren vn Speicherplatz *neu=x; //Belegung des Speichers return neu; } Der Funktin wird ein Objekt x übergeben, das die Werte für das neu zu erzeugende Heap-Objekt enthält. Der Rückkehrwert vn create() ist die Heapadresse neu. 15 Einketten eines Listenelementes (insert) vid insert(list_elem_t *ps, list_elem_t *neu) { // ps zeigt auf das Listenelement, hinter dem das // Listenelement neu eingekettet werden sll neu->next=ps->next; ps->next = neu; } ps->n ps neu neu->n = ps->n Vraussetzung: Die Liste hat bereits Elemente. 16
9 Ausketten eines Listenelementes (dequeue) vid dequeue(list_elem_t *ps) { // ps zeigt auf Element vr dem auszukettenden Element list_elem_t *h; h=ps->next; ps->next=(ps->next)->next; free(h); } ps->n = (ps->n)->n ps ps->n free(h) Gesnderte Behandlung erfrderlich, wenn erstes Element auszuketten ist. 17 Suchen eines Listenelementes (find) list_elem_t *find(int krit, list_elem_t *anker) { list_elem_t *a; a=anker; while (a!=null) { if ((a->i)==krit) return a; //Objekt a gefunden a=a->next; } return NULL; //nichts gefunden } a krit? krit? a=a->n 18
10 Nichtlineare dynamische Datenstrukturen Eine nichtlinear verkettete Flge vn Elementen (Objekten), die aus Standarddatentypen zusammengesetzt sind, nennt man nichtlineare dynamische Datenstruktur. Slche Strukturen sind vr allem: Bäume (Binärbäume, allg. Bäume) typisch für diese Strukturen ist die Anrdnung als Hierarchie, d.h. zwischen den Elementen besteht nch eine Halbrdnungsrelatin Graphen (kreisfreie Graphen, allgemeine Graphen) bei kreisfreien Graphen liegt nch eine Heterarchie als Struktur vr, während bei allg. Graphen nur netzartige Strukturen als allgemeinster Fall auftreten. 19 Nichtlineare dynamische Datenstrukturen Viele Anwendungsalgrithmen basieren auf slchen nichtlinearen Strukturen. Bei netzartigen Graphstrukturen müssen diese Algrithmen mit erschöpfendem Durchsuchen aller Möglichkeiten arbeiten. Das erfrdert prgrammseitig spezielle Hilfen (glbale stacks). Bei Hierarchien (Bäume) reicht die einfache Rekursivität aus. Bei vielen Snderfällen in Hierarchien nutzt man die s.g. Teile-und- Herrsche-Algrithmen. Diese Algrithmen teilen den aktuellen Bearbeitungsraum in Teilbearbeitungsräume und wenden dann den gleichen Algrithmus rekursiv auf die Teile an (herrschen), slange bis eine weitere Teilung nicht mehr sinnvll ist. Beispiel: Binärbäume 20
11 Binärer Baum und Rekursin (1) Wurzel B 0 Linker Teilbaum B 0L Rechter Teilbaum B 0R Binärbaum über Kntenmenge V B 0 = (W 0, B 0L,B 0R ) (W 0,, ) B x = (W x, B xl,b xr ) (W x,, ) mit W 0,B 0, W x,b x, ε V und als leeres Element Indizes werden durch Aneinandereihung gebildet, z.b. x=0l xl = 0LL, x=0r xl = 0RL usw. Ein Baum ist entweder ein einzelner Knten der ein als Wurzel dienender Knten, der mit einer Menge vn Bäumen verbunden ist. (beim Binärbaum mit zwei Teilbäumen verbunden) 21 Binärer Baum und Rekursin (2) Verschiedene Strategien zum Traversieren des Baums Prerder: 1. Besuche die Wurzel des Baumes 2. Besuche den linken Teilbaum 3. Besuche den rechten Teilbaum
12 Binärer Baum und Rekursin (3) Verschiedene Strategien zum Traversieren des Baums Inrder (Symmetrische Strategie): 1. Besuche den linken Teilbaum 2. Besuche die Wurzel 3. Besuche den rechten Teilbaum Binärer Baum und Rekursin (4) Verschiedene Strategien zum Traversieren des Baums Pstrder: 1. Besuche den linken Teilbaum 2. Besuche den rechten Teilbaum 3. Besuche die Wurzel
13 Binärer Baum und Rekursin (5) Strategien zum Traversieren des Baums (Frtsetzung) Alle bisherigen Verfahren besuchen entweder tiefe Knten der links stehende Knten zuerst. Bei Suchbäumen werden Lösungen u.u. erst spät gefunden. Level-Order-Traversierung: Besuche die Knten vn links nach rechts innerhalb einer Ebene, danach die jeweils tiefere Ebene. Diese Reihenflge wird nicht durch Zeiger in innerhalb der Baumstruktur unterstützt Diese Reihenflge wird auch nicht durch Rekursin unterstützt 25 Binärer Baum mit srtierten Daten (1) Baum-Elemente: ID Daten Zeigerlinks Zeigerrechts Zeiger auf Baum-Wurzel: NULL-Zeiger, wenn Nachflge-Elemente nicht vrhanden: 26
14 Binärer Baum mit srtierten Daten (2) Suchen eines Elements mit ID=x im srtierten Binärbaum: Knten = Wurzel Aufsuchen Knten: falls ID==x dann gefunden, Ende falls x<id: Verflge Zeiger-links falls x>id: Verflge Zeiger-rechts Nach Verflge wird der jeweilige Knten nach.g. Regel besucht, slange bis Knten mit ID gefunden der ein Verflgen auf den NULL-Zeiger trifft. Dann ist das gesuchte Element im Baum nicht vrhanden. 27 Bewertung Binärbaum Beispiel: 15 Wurzel im Bild allgemein Berechnung Anzahl Ebenen 4 e Knstruktinsparameter Anzahl Elemente 15 n = 2 e -1 Schritte zum Finden eines Elements 4 (inkl. Zugriff auf Wurzel) s=e s = lg 2 n 28
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
MehrPraxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
Mehr10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm
10. Kapitel (Teil1) BÄUME GRUNDLAGEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen
MehrGrundlagen 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.
MehrProgrammieren 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
MehrDatenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
MehrC- 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
MehrEinfü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
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein
MehrBinärbäume: Beispiel
Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des
MehrAdvanced 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
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
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.
Mehr1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
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
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
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
MehrÜbungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 E-Uebung3.fm
E 3. Übung E 3. Übung Besprechung 1. Aufgabe Aufgabe 3: malloc Debugger gdb E.1 1. Include, Deklarationen #include #include void append_element(int value); int remove_element(void);
MehrZeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
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
Mehr368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,
MehrVerkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
Mehr1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI
MehrInformatik II Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
MehrSchwerpunkte. 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
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
MehrProgrammieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
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)
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrÜbungen zu Systemprogrammierung 1 (SP1)
Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrTheoretische 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
Mehr1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/2, Folie 1 2014 Prof. Steffen Lange - HDa/FbI
MehrNachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
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
MehrAlgorithmen 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
MehrEinfü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
MehrALGORITHMEN- PARADIGMEN
4. Kapitel ALGORITHMEN- PARADIGMEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaFen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen
Mehr11. 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
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
MehrWillkommen zur Vorlesung. Algorithmen und Datenstrukturen
Willkommen zur Vorlesung Algorithmen und Datenstrukturen Mein Name: Andreas Berndt Zum Dozenten Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen Derzeitige Sprachen:
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrKapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
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
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
MehrBinäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Elementare Datenstrukturen Array Linked List Stack Queue Tree (Feld) (Verkettete Liste) (Stapel) (Warteschlange) (Baum) Einschub:
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,
MehrNachtrag zu binären Suchbäumen
Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement
MehrInhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern
MehrALP 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
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes
MehrC++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
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
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,...
MehrProbeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten
Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges
MehrC++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
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
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
MehrDynamische Speicherverwaltung
Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrSuchbäume mit inneren Knoten verschiedener Knotengrade.
Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in
MehrPraxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung"
Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung" Christof Elbrechter Neuroinformatics Group, CITEC May 15, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ May 15,
MehrEarly first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement
Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Max Haslbeck Technische Universität München 20.01.2015 Zusammenfassung 1 Einleitung 2 Begriffsklärung Heutzutage
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
MehrC- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?
C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)
MehrSpeicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
MehrÜbersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
MehrDas folgende Programm demonstriert, wie man Speicheradressen von Variablen ermittelt.
Kapitel 8 Zeiger (Pointer) Bislang war beim Zugriff auf eine Variable nur ihr Inhalt von Interesse. Dabei war es unwichtig, wo (an welcher Speicheradresse) der Inhalt abgelegt wurde. Ein neuer Variablentyp,
MehrDynamischer Speicher
Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrEinfach 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
MehrSeminar Datenbanken Martin Gerstmann
Seminar Datenbanken Martin Gerstmann Gliederung 1. Ziele 2. Arten 2.1. erweiterbares Hashing 2.2. lineares Hashing 2.3. virtuelles Hashing 3. Bewertung 1. Ziele wachsende/schrumpfende Datenmengen verwalten
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
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus wurden ausgewählte Teile in Abstimmung
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
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
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
MehrWas bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,
MehrC für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
MehrPASCAL. Programme. Daten, Datentypen. Strukturierte Datentypen. Pointers. Dateien: Allgemeine Ein-/ Ausgabe. Funktionen und Prozeduren
PASCAL Lebensdauer und GUltigke itsbereich vn Labels Die Verwendung vn Labels und Spriingen Prgramme Daten, Datentypen Strukturierte Datentypen Pinters Dateien: Allgemeine Ein-/ Ausgabe Funktinen und Przeduren
MehrSortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
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
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),
MehrPraxis der Programmierung
Zusammengesetzte Datentypen, dynamische Speicherverwaltung Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Zusammengesetzte
MehrEs sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:
Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder
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
MehrKapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14
Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen
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
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
MehrProgrammierkurs C. Sommersemester 2011, 5. Vorlesung. Stuttgart, den 15. April Heiko Schulz. University of Stuttgart, Math.
Programmierkurs C Sommersemester 2011, 5. Vorlesung Stuttgart, den 15. April 2011 Heiko Schulz University of Stuttgart, Math. department Rückschau 161 Zeiger und Felder Komplexe Datentypen (struct) Dateioperationen
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
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
Mehrpublic interface Stack<E> { public void push(e e); public E pop();
ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für
Mehr