關於下面的程序,我有兩個問題,第一:指針的初始值在這裡怎麼設置?我如何讓他指向鏈表的初始結點?第二,prior:=prior^.next;這條語句好象沒執行,為什麼?怎麼設置這個循環呢?procedure TForm1.Button2Click(Sender: TObject);
//插入
type
  PNode=^TNode;
  TNode=Record
    ElemValue:string;
    prior:PNode;
    next:PNode;
end;
var
  prior:PNode;
begin
  new(prior);
  if prior^.ElemValue=Edit2.text then
  begin
    prior.next^.ElemValue :=Edit3.Text;    prior.next.next^.elemvalue:=prior.next^.ElemValue;
  end;
  prior:=prior^.next;
end;

解决方案 »

  1.   

    例子:
    procedure TForm1.Button1Click(Sender: TObject);
    type
      PNode=^TNode;
      TNode=Record
        ElemValue:string;
        prior:PNode;
        next:PNode;
    end;
    var
      Nodes: Array of PNode;
      I: Integer;
      P: PNode;
    begin
      SetLength(Nodes, 5);
      for I := Low(Nodes) to High(Nodes) do
      begin
        New(Nodes[I]);
        with Nodes[I]^ do
        begin
          ElemValue := IntToStr(I);
          prior := nil;
          next := nil;
        end;
        if I > Low(Nodes) then
        begin
          Nodes[I].prior := Nodes[I-1];
          Nodes[I-1].next := Nodes[I];
        end;
      end;
      P := Nodes[0];
      while P.next <> nil do
      begin
        ShowMessage(P.ElemValue);
        P := P.next;
      end;
      //最后用Dispose释放所有链表的节点
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    prior.next.next^.elemvalue:=prior.next^.ElemValue;有问题
    prior.next^.next^.elemvalue:=prior.next^.ElemValue;
    你到底想干嘛??
      

  3.   

    我的鏈表定義是不是本身就有問題?
    type
      PNode=^TNode;
      TNode=Record
        ElemValue:string;
        prior:PNode;
        next:PNode;
        head:pnode;
    end;
    var
      head:PNode;
       prior:PNode;
      anext:PNode;
    procedure TForm1.Button1Click(Sender: TObject);
    //初始化
    begin
      new(prior);
      new(anext);
      prior.ElemValue:=S;
      while(edit1.text<>'') do
      begin
        if prior.ElemValue='' then
          begin
            prior.ElemValue:=edit1.text;
            Edit5.Text:= Edit5.Text+' '+prior^.ElemValue;
            S:=edit1.Text;
            S1:=edit1.Text;
            head:=prior;
            break;
          end
        else  begin
          anext.ElemValue:=edit1.text;
          Edit5.Text:= Edit5.Text+' '+anext.ElemValue;
          S:=edit1.Text;
          S3:=edit1.Text;
          end;
        prior.next:=anext;
        prior:=anext;
        break;
      end;
      anext:=head;
    end;