PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

DES-Simulator in JAVA, objektorientiert
Klassen - Verkettete Liste -
Zusammenfassung der Vorwoche
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
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.

Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
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
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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 Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Anweisungen und Datentypen
Informatikunterricht mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
Objektorientierte Modellierung
Rekursion mit Listen: Quicksort
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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 Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Auslegung eines Vorschubantriebes
Vorlesung Binärer Suchbaum II-
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
Analyseprodukte numerischer Modelle
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Zwei Denkansätze zur Klasse Schlange
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl.

PRJ 2007/2 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl. Lösung : Jedes Element kennt nur genau seinen Nachfolger verkettete Datenstruktur

PRJ 2007/3 Stefan Dissmann Idee der Verkettung 17 1.für jedes Element ein Objekt anlegen

PRJ 2007/4 Stefan Dissmann Idee der Verkettung für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt

PRJ 2007/5 Stefan Dissmann Idee der Verkettung für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt 3.und so fort …

PRJ 2007/6 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln

PRJ 2007/7 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { }

PRJ 2007/8 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; }

PRJ 2007/9 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; private IntElement nachfolger; }

PRJ 2007/10 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen:

PRJ 2007/11 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

PRJ 2007/12 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

PRJ 2007/13 Stefan Dissmann Technische Umsetzung: Element Und weitere Methoden: public class IntElement { … public IntElement gibNachfolger() { return nachfolger; } public int gibWert() { return wert; }

PRJ 2007/14 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln

PRJ 2007/15 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln public class IntListe { public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

PRJ 2007/16 Stefan Dissmann Technische Umsetzung: Liste … und Attribute ergänzen: public class IntListe { private IntElement anfang, ende; public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

PRJ 2007/17 Stefan Dissmann Implementierung: Liste … und implementieren: public IntListe() { anfang = ende = null; }

PRJ 2007/18 Stefan Dissmann Implementierung: Liste … und implementieren: public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; }

PRJ 2007/19 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } anfang ende null

PRJ 2007/20 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu anfang ende null

PRJ 2007/21 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu null anfang ende

PRJ 2007/22 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } null anfang ende wert nachfolger neu

PRJ 2007/23 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

PRJ 2007/24 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

PRJ 2007/25 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

PRJ 2007/26 Stefan Dissmann Implementierung: Liste public int gibErstes() { if (anfang != null) return anfang.gibWert(); else return 0; }

PRJ 2007/27 Stefan Dissmann Implementierung: Liste public boolean leer() { return anfang == null; }

PRJ 2007/28 Stefan Dissmann Implementierung: Liste public void löscheErstes() { if (anfang != ende) { anfang = anfang.gibNachfolger(); } else { anfang = ende = null; }

PRJ 2007/29 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); }

PRJ 2007/30 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); } Anmerkung: Bei der Benutzung von IntListe wird IntElement nicht benötigt!