我现在面临与Pascal中的列表相关的问题。 当我添加一个人它成功,但当我想添加下一个人时,它会抛出一个错误:
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;
答案 0 :(得分:0)
问题是,当你在Addperson中创建一个新的ListElement记录时,你会假设Person被神奇地初始化了。事实并非如此。它需要被查找或创建(new()'ed),具体取决于它的实际用途。