Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION."—  Präsentation transkript:

1 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

2 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

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

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

5 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.

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

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


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

Ähnliche Präsentationen


Google-Anzeigen