DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

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.
Firma Bananasplit Wir bieten folgende Rabatte auf den Kauf unserer Edel-Bananen: Großhändler(15%) Einzelhändler(10%) Einzelkunde(5%)
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Claudio Moraga; Gisbert Dittrich
Zusammenfassung der Vorwoche
Rekursionen Erstellt von J. Rudolf im November 2001 /
16. Modularität und Abstraktion
7. Natürliche Binärbäume
Kapitel 6. Suchverfahren
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Puck eine visuelle Programmiersprache für die Schule
Sortierverfahren Richard Göbel.
DO...WHILE Anweisung.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
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.
Informatik II (für Fakultät Maschinenwesen)
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.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Datensammlung
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
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
Listen Klaus Becker KB Listen 2 Listen Ansgar A., Speyer Claudia B., Koblenz Knut B., Neustadt Annett B., Wörrstadt Stefani D., Bad Ems Jochen F.,
Sortieren und Suchen IFB 2002 Daniel Jonietz.
Diskrete Mathematik II
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Wiederholte Programmausführung
Konzept einer Programmiersprache!
Graphen und Bäume.
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.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Mala Bachmann, Beispiel Velorennen Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
Mala Bachmann, Beispiel Velorennen (1) Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
MODULA-2.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Kapitel 5: Von Datenstrukturen zu Abstrakten Datentypen
Codebaumanalyse Was geschieht in der Methode Codebaum.decodiere, wenn als Parameter der Code 001 übergeben wird? Gib die Zeilennummern der durchlaufenen.
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
Der Datentyp Verbund (record)
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
1 // Heap als ADT // JW: V1.0 // Vorlage gemaess EED-Quelltext // #include #include // für double pow (double d, int i) #include // fuer INT_MIN.
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
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Delphi Chars und Strings
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Wiederholte Programmausführung
Prüfungsbesprechung Barbara Scheuner
Parametrisierte Prozeduren und Funktionen
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION LISTENOPERATIONEN 1. AUFBAUAUFBAU 2. DURCHLAUFEN (AUSGEBEN DER ELEMENTEN AUF DEN BILDSCHIRM)DURCHLAUFEN 3. EINFÜGENEINFÜGEN 4. LÖSCHENLÖSCHEN 5. SUCHEN EINES ELEMENTSSUCHEN EINES ELEMENTS

Pointer ( Adresse) ^ Type adrint= ^ integer; adrreal= ^ real; var adr1, adr2 : adrint; adr3, adr4 : adrreal; adr5 : ^ integer; adr6 : ^ real; ….. Adr1:= adr2;richtig adr3:= adr1;falsch adr1:=adr5; falsch adr6:=adr3: falsch Var a: integer; adrint: ^ integer; …… a:=6; write (a);(6) adrint:= ^ a; write (adrint ^ )(6) write(adrint) ist nicht möglich

Der Knoten Type adresse=^knoten knoten= record info: integer; adr : adresse; end; var p : adresse; info adr P

Der Buffer (HEAP) Procedure NEW (var p:adresse) versichert Speicherplatz im Buffer Procedure DISPOSE ( var p: adresse) befreit den Speicherplatz

Definition Eine Sammlung von n > 0 Knoten, x 1, x 2 … x n, die mit einander in einer bestimmten Reihenfolge verbunden sind Info 1 adr 2 Info 2 adr 3 Info n nil adr 1 adr 2 adr n Nil hat die Bedeutung : keine Adresse, es ist der letzte Knoten der Liste.

Aufbau einer Liste mit n Knoten function aufbau : adresse; var i,n : integer; wurzel, neu : adresse; begin write( die Anzahl der Knoten ist:); readln(n); new(wurzel); wurzel :=nil; writeln(die eingegebene Zahlen sind :); for i := 1 to n do begin new (neu); readln(neu^.info); neu^.adr:=wurzel; wurzel := neu; end; aufbau := wurzel; end; RUN wurzel nil wurzel neu wurzel neu wurzel nil wurzel { oder neu^.info:=i

Aufbau einer Liste aus der Zahlen die eingegeben werden bis 0 trifft function aufbau : adresse; var i,n : integer; wurzel, neu : adresse; begin write( die erste Zahl ist:); new(wurzel); wurzel :=nil; writeln(die eingegebene Zahlen sind :); while n <> 0 do begin new (neu); neu^.info := n; neu^.adr:=wurzel; wurzel := neu; readln(n); end; aufbau := wurzel; end; RUN wurzel nil wurzel neu wurzel neu wurzel nil wurzel

Durchlaufen Ausgeben der Elementen auf den Bildschirm Procedure durchlaufen (p: adresse); var q : adresse; begin q := p; writeln ( die Knoten enthalden die folgenden Daten : ); while q <> nil do begin write (q^.info,,); q := q^.adr; end; RUN

Einfügen 1. Einfügen eines Knoten am Kopf der Listeam Kopf 2. Einfügen eines Knoten am Ende der Listeam Ende 3. Einfügen eines Knoten vor den K-nte Knotenvor den K-nte 4. Einfügen eines Knoten nach den K-nte Knotennach den K-nte 5. Einfügen eines Knoten vor den Knoten mit einer beliebigen Informationvor den Knoten mit einer beliebigen Information 6. Einfügen eines Knoten nach den Knoten mit einer beliebigen Informationnach den Knoten mit einer beliebigen Information

Einfügen eines Knoten am Kopf der Liste Function einfugen(p:adresse) : adresse; var neu : adresse; begin new( neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=p; einfugen:=neu; end; RUN neuneu^.adr p nil

Einfügen eines Knoten am Ende der Liste Function einfugen(p:adresse) : adresse; var q, neu : adresse; begin q := p; while q^.adr <> nil do q:= q^. adr; new(neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=nil; q^.adr:=neu; einfugen:=p; end; RUN adr p qq neu neu^.adr nil

Einfügen eines Knoten vor den K-nte Knoten Function einfugen(p:adresse):adresse; var neu,q: adresse; k,i :integer; begin q:=p; writeln(k ist : ); readln (k); for i :=1 to k-2 do q:=q^.adr; new(neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=q^.adr; q^.adr:=neu; einfugen:=p; end; RUN adr PqPq k-2 k-1 k q neuneu^.adr q^.adr

Einfügen eines Knoten nach den K-nte Knoten Function einfugen(p:adresse):adresse; var neu,q: adresse; k,i :integer; begin q:=p; writeln(k ist : ); readln (k); for i :=1 to k-1 do q:=q^.adr; new(neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=q^.adr; q^.adr:=neu; einfugen:=p; end; RUN adr PqPq k-1 k k+1 q neuneu^.adr q^.adr

Einfügen eines Knoten vor den Knoten mit einer beliebigen Information Function einfugen(p:adresse):adresse; var neu,q: adresse; inf :integer; begin q:=p; writeln(die gesuchte Information ist :); readln (inf); while q^.adr^.info<> inf do q:=q^.adr; new(neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=q^.adr; q^.adr:=neu; einfugen:=p; end; RUN adrinfo adr adr PqPq inf=info q neuneu^.adr q^.adr

Einfügen eines Knoten nach den Knoten mit einer beliebigen Information Function einfugen(p:adresse):adresse; var neu,q: adresse; inf :integer; begin q:=p; writeln(die gesuchte Information ist : ); readln (inf); while q^.info<> inf do q:=q^.adr; new(neu); writeln(die neue Information ist : ); readln(neu^.info); neu^.adr:=q^.adr; q^.adr:=neu; einfugen:=p; end; RUN info adr adr PqPq inf=info q neuneu^.adr q^.adr

Löschen 1. Löschen des ersten Knoten der Listedes ersten Knoten 2. Löschen des letzten Knoten der Listedes letzten Knoten 3. Löschen des K-nten Knotendes K-nten Knoten 4. Löschen des Knoten mit einer beliebigen Informationdes Knoten mit einer beliebigen Information 5. Löschen der ganzen Listeder ganzen Liste

Suchen eines beliebigen Elements procedure suchen (p: adresse); var q:adresse; inf :integer; ok: boolean; begin writeln(die gesuchte Information ist:); readln (inf); ok:=false; q:= p; while (q<> nil) AND(inf<>q^.info) do begin if inf= q^.info then ok:=true; q:= q^.adr; end; if ok=true then writeln(die Information exitiert in der Liste) else writeln(die Information exitiert in der Liste nicht); end; RUN

Löschen des ersten Knoten der Liste function loschen(p : adresse) : adresse; var q: adresse; begin q:=p ^.adr; dispose (p); loschen:= q; end; RUN adr p p^.adr q nil

Löschen des letzten Knoten der Liste Function loschen ( p : adresse) : adresse; var q:adresse; begin q:= p; while q^.adr^.adr<> nil do q:= q^.adr; dispose( q^.adr); q^. adr:= nil; loschen := p; end; RUN adr pqpq nil q q^.adrq^.adr^.adr

Löschen des K-nten Knoten Function loschen (p: adresse): adresse; var q, x: adresse; k, i : integer; begin Writeln(wie vielter Knoten wird gelöscht? ); readln(k); q:=p; for i := 1 to k - 2 do q:= q^.adr; x:=q^.adr; q^.adr:=x^.adr; dispose(x); loschen := p; end; RUN adr pqpq nil adr k-2k-1 k k+1 q xx^.adrq^.adr

Löschen des Knoten mit einer beliebigen Information Function loschen (p: adresse): adresse; var q, x: adresse; inf: integer; begin Writeln(welche Information wird gelöscht? ); readln(inf); q:=p; while q^.adr^.info<> inf do q:= q^.adr; x:=q^.adr; q^.adr:=x^.adr; dispose(x); loschen := p; end; RUN adrinfo adr adr pqpq nil adr inf=info q xx^.adrq^.adr

Löschen der ganzen Liste procedure loschen (p: adresse); begin dispose (p); end; RUN adr p nil