Einzelnen Beitrag anzeigen

nahkillo94

Registriert seit: 1. Sep 2010
10 Beiträge
 
#1

"Invalid pointer operation" - Stack

  Alt 26. Jan 2012, 23:12
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
Code:
node^.next := first;
verursacht. Ich vermute es fehlt irgendwo ein Dach, oder?

Geändert von nahkillo94 (26. Jan 2012 um 23:16 Uhr)
  Mit Zitat antworten Zitat