回 帖 发 新 帖 刷新版面

主题:????帮帮我,搞不懂??指针问题 +分

type pn=^num;
     num=record
     numstring:string;
     next:pn;
     end;
var u,head:pn;

procedure readnums;
var v,p:pn;
    k,n:integer;
    number:string;
     begin
        readln(n);
        u:=head;
        
        for k:=1 to n do
           begin
             read(number);
             new(p);

             p^.numstring:=number;
             p^.next:=nil;
             v^.next:=p;
             v:=p;
           end;
    end;
begin
   readnums;
   u:=head;
   while u^.next<>nil do
      begin
        writeln(u^.next^.numstring);
        u:=u^.next;
      end;
end.为什么只能读进一个数???编译通过却在运行过程有错误

回复列表 (共4个回复)

沙发

你的v和head没new过啊,就不能^.next:=....了
好像要改成readln......大概是fp的问题,我也搞不懂了
还有p和v没和主要指针u建立联系,就算读入成功,输出也不行的
type pn=^num;
     num=record
     numstring:string;
     next:pn;
     end;
var u,head:pn;

procedure readnums;
var p:pn;
    k,n:integer;
    number:string;
     begin
        readln(n);
        u:=head;

        for k:=1 to n do
           begin
             new(p);
             readln(p^.numstring);
             p^.next:=nil;
             u^.next:=p;
             u:=p;
           end;
    end;
begin
   readnums;
   u:=head;
   while u^.next<>nil do
      begin
        writeln(u^.next^.numstring);
        u:=u^.next;
      end;
end.

板凳

忘说了,p之为读入提供,可以说没意义

3 楼


谢了,天行

4 楼


我发现我的程序的read改成readln就行了~这是为什么啊??????

我来回复

您尚未登录,请登录后再回复。点此登录或注册