Hallo,
ich bin dabei ein eigenen Stack zu erstellen, habe allerdings Probleme mit pointern.
Beim kompilieren gibt es keinen Fehler, doch wenn ich das Programm ausführe und etwas auf den stack legen will kommt "Invalid pointer operation".
Delphi-Quellcode:
type
PStackItem = ^TStackItem;
TStackItem = record
data: integer;
next: PStackItem;
end;
TStack = class
private
public
first : PStackItem;
constructor create();
procedure push(data : integer);
function pop() : integer;
function peek() : integer;
end;
constructor TStack.create();
begin
inherited;
first := nil;
end;
procedure TStack.push(data : integer);
var
node : PStackItem;
begin
node^.data := data;
node^.next := first;
first := node;
end;
function TStack.pop() : integer;
var
content : integer;
old : PStackItem;
begin
content := 0;
if (first <> nil) then
begin
old := first;
first := first^.next;
content := old^.data;
old := nil;
end;
result := content;
end;
Der Fehler wird in push() durch
verursacht. Ich vermute es fehlt irgendwo ein Dach, oder?