Pascal 帕斯卡。单向列表。环
下面是一本书中的示例程序。如果不是eof循环,我无法停止。我试图在程序中插入crt;,const CheckEof:boolean=true,如果要在运行时按ctrl+Z,则它不起作用Pascal 帕斯卡。单向列表。环,pascal,Pascal,下面是一本书中的示例程序。如果不是eof循环,我无法停止。我试图在程序中插入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
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.
要使示例生效,请删除该行 常量CheckEOF:boolean=true;{我的插入} 并插入CheckEOF:=true;在创建之前;调用主程序。然后,当您按Ctrl-Z时,程序终止
当您可能要更改crt单元的CheckEOF时,您的代码声明了一个新变量CheckEOF。EOF只有在连接到stdin的管道终止时才会变为真。您将需要另一种方法来执行此操作,除了标准DIN,除非您仅将其用于管道。Crt覆盖标准输入/输出,在这种情况下根本不应使用。f:=真;而f确实开始写“s=”;readlns;如果s='ENDENDEND123123^^^'则f:=false,否则开始新的r;r^.Info:=s;r^.Urm:=零;q^.Urm:=r;q:=r;终止终止但我认为这不是最好的解决办法