Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Advertisements

Klassen - Verkettete Liste -
Kapitel 5. Stacks und Queues
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Operationen auf verketteten Listen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) public Knoten einfuegenVor(Datenelement dNeu, Datenelement dVergleich){
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 6
Algorithmen und Datenstrukturen Übungsmodul 10
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Algorithmen und Datenstrukturen Übungsmodul 8
Algorithmen und Datenstrukturen Übungsmodul 11
Algorithmen und Datenstrukturen SS 2005
Algorithmen und Datenstrukturen Übungsmodul 1
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Programmiersprachen II Fortsetzung Datenstrukturen Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Verkettete Liste Idee: Liste als Folge von Datenelementen. Jedes Element enthält einen Verweis auf das nachfolgende Element. Liste kann also beliebig lang werden. Rekursiver Datentyp: enthält Referenzvariablen vom selben Typ wie er selbst ist. (Nur bei Referenztypen möglich!) Datentyp für Listenelement: reftype Node = { int value Node next }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Verkettete Liste als ADT type List = { reftype Node = { int value Node next } Node first init() { first = null } append( int a) {... } } //Verwendung useList() { List myList myList.init().... myList.append( 10) } first myList first myList value: 10 next:

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Elemente vorne einfügen insertFirst( int a) { Node n n = new Node// neues Element erzeugen n^.value = a// und initialisieren n^.next = first// Element vor das erste Element einhängen first = n// neues Element ist ab nun das erste Element } Bsp: myList.insertFirst( 199) myList.first value: 18 next: value: 13 next: n value: 199 next:

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Elemente hinten anhängen appendLast( int a) { Node n // neuen Knoten erzeugen und initialisieren n = new Node n^.value = a; n^.next = null if (first == null) { // erstes Element wird eingefügt first = n } else { Node cur = first // Ende der Liste suchen while (cur^.next != null) { cur = cur^.next } // cur zeigt auf das letzte Element in der Liste (cur.next == null) cur.next = n } } Bsp: myList.appendLast( 199) myList.first value: 18 next: value: 13 next: n value: 199 next: cur

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Liste vollständig löschen delete(){ Node next while (first != null) { next = first^.next // Referenz auf das nächste Element delete first// erstes Element der Liste löschen first = next// neues erstes Element der Liste } first = null }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Element sortiert einfügen insertSorted( int a) { Node n, cur, prev n = new Node n^.value = a cur = first prev = null // Position suchen while( cur!=null && cur^.value < a) prev = cur cur = cur^.next } // prev zeigt auf Element vor der Einfügeposition // Einfügen in der Mitte oder am Ende? if (prev != null){ prev^.next = n //Mitte: cur != null, Ende:cur == null n^.next = cur } // Einfügen am Beginn, oder die Liste ist leer else { first = n n^.next = cur // leere Liste: cur == null }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Zirkuläre Liste mit Sentinel Sonderfälle reduzieren Liste enthält immer ein Element (Sentinel) Letzte Element verweist auf das erste Element der Liste Datentyp und Initialisierung: type List = { reftype Node = { int value Node next } Node sentinel init() { sentinel = new Node sentinel ^.next = sentinel sentinel ^.value = 0 // Wert irrelevant! } value: 0 next: sentinel

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Zirkuläre Liste mit Sentinel Sortiertes einfügen: insert(int a) { Node n, cur, prev n = new Node n^.value = a // Position suchen cur = sentinel ^.next prev = sentinel while( cur != sentinel && cur^.value < a) prev = cur cur = cur^.next } n^.next = cur prev^.next = n } beginne die Suche mit dem "1." Element mit gültigen Wert cur zeigt auf das Element hinter Einfügeposition (falls am Ende der Liste einzufügen ist, auf sentinel.) prev zeigt auf das Element vor der Einfügeposition (falls am Beginn der Liste einzufügen ist, auf sentinel).