Hi Leute,
nachdem ihr mir vorher die Grundlagen der Pointer erklärt habt, habe ich mich jetzt an die "schwereren" Aufgaben getraut und wollte wissen, ob ich sie richtig gelöst habe / bzw. ob es bessere Lösungen gibt.
Aufgaben:
1.) Wie sieht die Zeigerkette beim Aufruf von Formcreate aus ?
2.) Was macht die Prozedur fuegean (erkläre ausführlich) ?
3.) Skizziere die Kette nach dem 1.Aufruf von fuegean !
4.) Wie sieht die fertige Kette aus ?
5.) Erkläre genau die Prozedur Button2click !
6.) Was erscheint in Edit2 als Text ?
Delphi-Quellcode:
unit Unit1;
//Zeigerverkettet
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,StdCtrls;
type TForm1 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Edit4: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var Form1: TForm1;
implementation
{$R *.DFM}
//-----------------------------------------------------
Type tzeiger=^element;
element=Record
inhalt:
string; next:tzeiger
end;
Var kopf,hilf:tzeiger;
//-----------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin kopf:=NIL;
end;
procedure fuegean(s:
string);
begin
new (hilf);
hilf^.inhalt:=s;
hilf^.next:=kopf;
kopf:=hilf;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
fuegean(edit1.text);
fuegean(edit2.text);
fuegean(edit3.text);
edit4.text:='
ok Kette fertig';
end;
procedure TForm1.Button2Click(Sender: TObject);
Var hilf:tzeiger ; s:
string;
begin
s:=kopf^.inhalt;
hilf:=kopf^.next;
s:=s+hilf^.inhalt;
hilf:=hilf^.next;
s:=s+hilf^.inhalt;
edit4.text:=s;
end;
end.
Meine Lösungen:
1.) Die Kette besteht aus einem Glied("kopf"), das keinen Inhalt hat und dessen Pointer auf NIL zeigt.
2.) Fuegean reserviert einen Platz im Speicher für das Kettenglied "Hilf". Diesem Kettenglied wird der Inhalt "s" zugeordnet, sowie ein Pointer auf das Kettenglied "Kopf". Daraufhin wird "Hilf" selbst zum "Kopf"
3.) kein Plan
4.) Die Kette besteht aus dem letzten Glied "Kopf(kein Inhalt/Zeiger auf NIL)" davor das Glied Hilf(edit3.text/Zeiger auf Kopf), davor wieder ein Hilf(edit2.text/Zeiger auf Hilf) und noch ein Hilf(edit1.text/Zeiger auf Hilf).
5.)Die Texte aus Edit 1-3 werden in umgekehrter Reihenfolge in Edit 4 herausgegeben.
6.)(Nehme an ein Fehler in der Aufgabenstellung / Edit 4 wäre sinnvoller, da Edit2 User-abhängig ist
) In Edit 4 stehen die Texte der drei anderen Edit-Felder in folgender Reihenfolge edit3,edit2,edit1
Sooo, ich würde mich über jede Kritik zu meinen Lösungen freuen. Ihr könnt sie ruhig in der Luft zerreissen, denn für die Arbeit muss ich ja wissen, wie es richtig gemacht wird
.
Was mir selbst schon aufgefallen ist, ist das sich Aufgabe 5 und 6 irgendwie gleich anhören...
Viel Spass und vielen Dank
VeeJay