Autor Beitrag
diamz55
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 29.09.06 18:45 
Ich habe informatik & als mädchen habe echt keine ahnung was der lehrer babbelt!

Könnte mir jemand bitte den gefallen tuen und den folgenden abschnitt erklären...


:D


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
procedure tWortliste.Insert (x: string) ;

var z, Hilfszeiger: lex;

begin

if Anhang=NIL then

begin
new (z);
Anfang:=z;
z^.Vokabel:=x;
z^.naechster:=NIL
end{if}

else
begin
z:=Anfang;
repeat
Hilfszeiger:=z;
z:=z^.naechster
until ((x < Hilfszeiger^.Vokabel) or (z=NIL));

end{else}

new (z);
if (x < Hilfszeiger^.Vokabel) then
begin


z^.Vokabel:=Hilfszeiger^.Vokabel;
z^.naechster:=Hilfszeiger^.naechster;
Hilfszeiger^.Vokabel:=x;
Hilfszeiger^.naechster:=z
end

else
begin 
z^.naechster:=Hilfszeiger^.naechster;
z^.Vokabeln:=x;
Hilfszeiger^.naechster:=z
end{else}

end;


wäre echt sau lieb wenn es jemand erklären könnte was da in jeder zeile passiert...


vielen dank!

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Zuletzt bearbeitet von diamz55 am Fr 29.09.06 21:13, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 29.09.06 18:47 
Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian S.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 29.09.06 19:32 
Verketteliste mit Zeigern und einer Vorwärtsdeklaration? Hoffe des stimmt so und ich habe keine quatsch geschrieben - ansonsten verbessert mich bitte :)

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
procedure tWortliste.Insert(x: string);
var
  z, Hilfszeiger: lex;
begin
  if Anhang = nil then // sollte anfang heißen?: wenn noch kein element vorhanden ist...
    begin
      new(z); // speicher reservieren (z ist ein zeiger)
      Anfang := z; // da z nun das erste glied in der kette, ist anfang = z.
      z^.Vokabel := x; // erstem item der liste den string x zuordnen. - lex ist ein record?
      z^.naechster := nil // nächstes element noch nicht vorhanden, daher nil
    end{if}
  else // falls bereits ein element vorhanden ist
    begin
      z := Anfang; // setze z = anfang
      repeat // um sich nach ganz vorne zum letzten element zu "hangeln"
        Hilfszeiger := z;
        z := z^.naechster // nächstes element (sollte ne vorwärtsdeklaration sein)
      until ((x < Hilfszeiger^.Vokabel) or (z = nil)); // bis letztes element erreicht ist oder element noch keinen string besitzt
    end{else}

  new(z); // speicher wieder reservieren  { Kann es sein, dass hier sortiert wird? }
  if (x < Hilfszeiger^.Vokabel) then
    begin
      z^.Vokabel := Hilfszeiger^.Vokabel;
      z^.naechster := Hilfszeiger^.naechster;
      Hilfszeiger^.Vokabel := x;
      Hilfszeiger^.naechster := z
    end
  else
    begin
      z^.naechster := Hilfszeiger^.naechster;
      z^.Vokabeln := x;
      Hilfszeiger^.naechster := z
    end{else}

// Und zum schluss sollte der speicher wieder freigegeben werden:
  dispose(z);
end;
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 29.09.06 21:33 
Nicht schlecht.

Der Code implementiert eine sortierte (darauf solltest Du dochmals eingehen) einfache verkettete Liste.

Allerdings ist ein syntaxfehler im Code... ein 'end.' gehört nur ganz ans Ende des Pascal-Programms.

_________________
Na denn, dann. Bis dann, denn.