DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER...

22
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

Transcript of DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER...

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

DINAMISCHE STRUKTUREN

• FACHBEGRIFFE 1. DER POINTER

2. DER BUFFER

3. DER KNOTEN

• DIE EINFACHVERKETTETE LISTE DEFINITION

• LISTENOPERATIONEN1. AUFBAU

2. DURCHLAUFEN (AUSGEBEN DER ELEMENTEN AUF DEN BILDSCHIRM)

3. EINFÜGEN

4. LÖSCHEN

5. SUCHEN EINES ELEMENTS

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

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

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

Der Knoten

Type adresse=^knoten

knoten= record

info : integer;

adr : adresse;

end;

var p : adresse;

info adrP

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

Der Buffer (HEAP)

Procedure NEW (var p:adresse)versichert Speicherplatz im Buffer

Procedure DISPOSE ( var p: adresse)befreit den Speicherplatz

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

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

Nil hat die Bedeutung : keine Adresse, es ist der letzte Knoten der Liste.

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

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

wurzelneu

neu wurzel

neu

neu

neu

neu

wurzel

wurzel

wurzel

nil

wurzel

{oder neu^.info:=i

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

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

wurzelneu

neu wurzel

neu

neu

neu

neu

wurzel

wurzel

wurzel

nilwurzel

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

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

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

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

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

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

neu neu^.adr

p

nil

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

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

adrp

q q

neu neu^.adr

nil

nil

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

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

adr

P

q

k-2 k-1 k

q

neu neu^.adr

q^.adr

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

Einfügen eines Knoten nach den K-nte KnotenFunction 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

adr

P

q

k-1 k k+1

q

neu neu^.adr

q^.adr

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

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

adr info adr

adr

P

q

inf=info

q

neu neu^.adr

q^.adr

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

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

P

q

inf=info

q

neu neu^.adr

q^.adr

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

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

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

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

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

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

adrp

p^.adr

q nil

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

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 adr adrp

q

nil

q

q^.adr q^.adr^.adr

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

Löschen des K-nten KnotenFunction 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 adr adr adrp

q

nil

adr adr

k-2 k-1 k k+1

q x x^.adrq^.adr

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

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

adr info adr adr adrp

q

nil

adr adr

inf=info

q x x^.adrq^.adr

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

Löschen der ganzen Liste

procedure loschen (p: adresse);

begin

dispose (p);

end;

RUN

adrp

nil