hehe肯定是你的程序错误,有值并不代表正确,尤其是在链表调试(指针调试),有值也许是随机值。看看你的节点指向是否正确,另外看看结点创建正确吗?

解决方案 »

  1.   

    //以下是原码,
    procedure CreateNew(var Item:PMyRecord);//建立新节点
    begin
      New(Item);
      Item^.next:=nil;
      Item^.MyPoint.x:=0;
      Item^.MyPoint.y:=0;
    end;
    procedure GetPoint(var Current:PMyRecord;ReadPoint:TPoint);//给点附值
    begin
      Current^.MyPoint.x:=ReadPoint.x;
      Current^.MyPoint.y:=ReadPoint.y;
    end;
    /////或许是有问题
    procedure AddPoint(var Current:PMyRecord;FatherPoint:Tpoint);//在当前链表后
                                                                //插入新节点
    var
      temp:PMyReCord;
    begin
      CreateNew(temp);
      GetPoint(temp,FatherPoint);
      Current^.next:=temp;
      Current:=temp;
    end;
    Function CreateRanPoint(MAX:integer):PMyRecord;//创建一个表长为max的链表
    var
      RanFirst,Current:PMyRecord;
      i: integer;
      addpoint:tpoint;
    begin
      CreateNew(Current);
      ranfirst:=Current;
      ranfirst^.Mypoint:=randompoint;
      i:=1;
        repeat
         inc(i);
         addpoint:=randompoint;
         AddPoint(Current,addpoint);
        until (i=MAX);
        //current:=ranfirst;
      result:=ranfirst;
    end;
    Function Randompoint:tPoint;//生成随机点
    var temp,ix,jy:integer;
    begin
      randomize;
      temp:= random(500*500)+1;
      ix:=temp div 500;
      jy:=temp mod 500;
      result.x:=ix;
      result.y:=jy;
    end;
      

  2.   

    win32程序如何对循环进行了优化?
      

  3.   

    今天我终于找到了症结所在!!!
    原来毛病出在randomize!!!
    ;
    Function Randompoint:tPoint;//生成随机点
    var temp,ix,jy:integer;
    begin
     // randomize;
    毛病!!!
    Function CreateRanPoint(MAX:integer):PMyRecord;//创建一个表长为max的链表
    var
      RanFirst,Current:PMyRecord;
      i: integer;
      addpoint:tpoint;
    begin
      CreateNew(Current);
      ranfirst:=Current;
      ranfirst^.Mypoint:=randompoint;
      i:=1;
     // 加在这!!!
     randomize;
        repeat
        inc(i);
        addpoint:=randompoint;
        AddPoint(Current,addpoint);
        until (i=MAX);
        //current:=ranfirst;
      result:=ranfirst;
    end;  temp:= random(500*500)+1;
      ix:=temp div 500;
      jy:=temp mod 500;
      result.x:=ix;
      result.y:=jy;
    end;