Pascal列表问题

时间:2016-12-08 18:54:23

标签: pascal

我现在面临与Pascal中的列表相关的问题。 当我添加一个人它成功,但当我想添加下一个人时,它会抛出一个错误:enter image description here

Ide:Lazarus。

代码(代码开头的头部等于nil):

TYPE

  Person = RECORD
    name: STRING[15];
    last_name: STRING[15];
    age: INTEGER;
  end;

  pListElement = ^ListElement;

  ListElement = RECORD
    person: ^Person;
    next: pListElement;
  end;




PROCEDURE AddPerson(var head: pListElement);
PROCEDURE ShowPersons(var head: pListElement);



implementation

PROCEDURE AddPerson(var head: pListElement);
 Var NewPerson: pListElement;
   Begin
     new(NewPerson);
     Write(' Podaj imie: ');
     readln(NewPerson^.Person^.name);
     Write(' Podaj nazwisko: ');
     readln(NewPerson^.Person^.last_name);
     Write(' Podaj wiek: ');
     readln(NewPerson^.Person^.age);
     if (head = NIL) THEN
     begin
       head:= NewPerson;
       NewPerson^.next:= nil;
     end else
     begin
       NewPerson^.next:= head;
       NewPerson:= head;
     end;
   End;


  PROCEDURE ShowPersons(var head: pListElement);
   Begin
    if (head <> NIL) THEN
      begin
        WriteLn(' | ', head^.Person^.name:15, ' | ', head^.Person^.last_name:15, ' | ', head^.Person^.age:3, '  |');
        ShowPersons(head^.next);
      end;
    End;              

1 个答案:

答案 0 :(得分:0)

问题是,当你在Addperson中创建一个新的ListElement记录时,你会假设Person被神奇地初始化了。事实并非如此。它需要被查找或创建(new()'ed),具体取决于它的实际用途。