帕斯卡。单向列表。环形
Pascal. Unidirectional list. Loop
这是书中的示例程序。我无法停止“while not eof”循环。我试图在程序“Uses crt;”、“const CheckEof: boolean=true”中插入并在 运行 时按“ctrl+Z”,它不起作用。
Program P123;
uses
crt; {My insertion}
type
Adresacelula = ^Celula;
Celula = record
Info: string;
Urm: AdresaCelula;
end;
var
P, Q, R: AdresaCelula;
s: string;
i: integer;
const
CheckEOF: boolean = true; {My insertion}
Procedure Create;
begin
p := nil;
write ('s='); readln (s);
new (r); r^.Info := s; r^.Urm := nil;
p := r; q := r;
write ('s=');
while not eof do {Here is the loop i need to stop}
begin
readln (s); write ('s=');
new (r); r^.Info := s; r^.Urm := nil;
q^.Urm := r; q := r;
end;
end;
Procedure Display;
begin
r := p;
while r<>nil do
begin
writeln (r^.Info);
r := r^.Urm;
end;
readln;
end;
begin
Create;
Display;
end.
要使示例正常运行,请删除行
const CheckEOF: boolean=true; {My insertion}
并在主程序中的 Create;
调用之前插入 CheckEOF:=true;
。然后程序在您按下 Ctrl-Z 时终止。
您的代码声明了一个新变量 CheckEOF
,而您可能想更改 crt
单元的 CheckEOF
。
这是书中的示例程序。我无法停止“while not eof”循环。我试图在程序“Uses crt;”、“const CheckEof: boolean=true”中插入并在 运行 时按“ctrl+Z”,它不起作用。
Program P123;
uses
crt; {My insertion}
type
Adresacelula = ^Celula;
Celula = record
Info: string;
Urm: AdresaCelula;
end;
var
P, Q, R: AdresaCelula;
s: string;
i: integer;
const
CheckEOF: boolean = true; {My insertion}
Procedure Create;
begin
p := nil;
write ('s='); readln (s);
new (r); r^.Info := s; r^.Urm := nil;
p := r; q := r;
write ('s=');
while not eof do {Here is the loop i need to stop}
begin
readln (s); write ('s=');
new (r); r^.Info := s; r^.Urm := nil;
q^.Urm := r; q := r;
end;
end;
Procedure Display;
begin
r := p;
while r<>nil do
begin
writeln (r^.Info);
r := r^.Urm;
end;
readln;
end;
begin
Create;
Display;
end.
要使示例正常运行,请删除行
const CheckEOF: boolean=true; {My insertion}
并在主程序中的 Create;
调用之前插入 CheckEOF:=true;
。然后程序在您按下 Ctrl-Z 时终止。
您的代码声明了一个新变量 CheckEOF
,而您可能想更改 crt
单元的 CheckEOF
。