1 / 22

DINAMISCHE STRUKTUREN

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

joann
Download Presentation

DINAMISCHE STRUKTUREN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DINAMISCHE STRUKTUREN • FACHBEGRIFFE 1. DER POINTER 2. DER BUFFER 3. DER KNOTEN • DIE EINFACHVERKETTETE LISTEDEFINITION • LISTENOPERATIONEN 1. AUFBAU 2. DURCHLAUFEN(AUSGEBEN DER ELEMENTEN AUF DENBILDSCHIRM) 3. EINFÜGEN 4. LÖSCHEN 5. SUCHEN EINES ELEMENTS

  2. 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) Pointer ( Adresse) ^ write(adrint) ist nicht möglich

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

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

  5. Definition Eine Sammlung von n > 0 Knoten, x1, x2 … xn , die mit einander in einer bestimmten Reihenfolge verbunden sind Info1 adr2 Info2 adr3 Infon nil adr1 adr2 adrn Nilhat die Bedeutung : keine Adresse, es ist der letzte Knoten der Liste.

  6. 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 Aufbau einer Liste mit n Knoten wurzel nil neu wurzel neu wurzel neu nil wurzel wurzel neu {oder neu^.info:=i wurzel neu neu wurzel

  7. 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 Aufbau einer Liste aus der Zahlen die eingegeben werden bis 0 trifft wurzel nil neu wurzel neu wurzel neu nil wurzel wurzel neu wurzel neu neu wurzel

  8. DurchlaufenAusgeben 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; end; RUN

  9. Einfügen 1. Einfügen eines Knoten am Kopf der Liste 2. Einfügen eines Knoten am Ende der Liste 3. Einfügen eines Knoten vor den K-nte Knoten 4. Einfügen eines Knoten nach den K-nte Knoten 5. Einfügen eines Knoten vor den Knoten mit einer beliebigen Information 6. Einfügen eines Knoten nach den Knoten mit einer beliebigen Information

  10. 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 Einfügen eines Knoten am Kopf der Liste p nil neu neu^.adr

  11. 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 Einfügen eines Knoten am Ende der Liste q q nil adr p nil adr neu neu^.adr

  12. 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 Einfügen eines Knoten vor den K-nte Knoten k-2 k-1 k P q adr q q^.adr adr neu neu^.adr

  13. 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 Einfügen eines Knoten nach den K-nte Knoten k-1 k k+1 P q adr q q^.adr adr neu neu^.adr

  14. 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 Einfügen eines Knoten vor den Knoten mit einer beliebigenInformation inf=info P q adr info adr q q^.adr adr neu neu^.adr

  15. 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 Einfügen eines Knoten nach den Knoten mit einer beliebigen Information inf=info P q info adr q q^.adr adr neu neu^.adr

  16. Löschen 1. Löschen des ersten Knoten der Liste 2. Löschen des letzten Knoten der Liste 3. Löschen des K-nten Knoten 4. Löschen des Knoten mit einer beliebigen Information 5. Löschen der 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. function loschen(p : adresse) : adresse; var q: adresse; begin q:=p ^.adr; dispose (p); loschen:= q; end; RUN Löschen des ersten Knoten der Liste p^.adr p adr nil q

  19. 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 Löschen des letzten Knoten der Liste q q^.adr q^.adr^.adr p q adr adr adr nil

  20. 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 Löschen des K-nten Knoten k-2 k-1 k k+1 p q adr adr adr adr adr adr q^.adr x x^.adr q nil

  21. 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 Löschen des Knoten mit einer beliebigen Information inf=info p q adr adr adr info adr adr adr q^.adr x x^.adr q nil

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

More Related