with query1 do
   begin
    disablecontrols;
   try
     while  not  eof do
       begin
         while  ds[i].str<>query1.fields[1].AsString do
            i:=(i+1) mod m ;
         r:=ds[i].next;
         if r=nil
             then begin
                    //new(ds[i].next);
                    new(q);
                    ds[i].next:=q;
                    q^.ch:=strtoint(query1.fields[2].asstring)-1;
                    q^.next:=nil;
                    ds[i].kcount:=ds[i].kcount+1
                  end
            else if q^.ch<>strtoint(query1.fields[2].asstring)-1
                 then begin
                   ds[i].kcount:=ds[i].kcount+1;
                   new(p);
                   p^.ch:=strtoint(query1.fields[2].asstring)-1;
                   p^.next:=nil;
                   q^.next:=p;
                   q:=p ;
                   p:=nil
                 end ;
         progressbar1.position:=progressbar1.position+1 ;
         query1.next
       end;
     finally
       enablecontrols;
    end;
当我在后面要利用到ds[i].next链表,发现链表长度变化了,变短了!比如,我在单步执行时,发现ds[0].kcount=14,也就是该对应的ds[0].next的链表长度为14,可是后面用指针查找ds[0].next这个链表时发现只有3个结点的长度!那位高手要是能在今晚帮我解决的话,立马给满分!!!!
很着急的!!!