zoukankan      html  css  js  c++  java
  • Delphi双向链表

    要点:

    1.其实链表,就是每个节点结构体里面多了2个指针,相当于这个节点的左手和右手,左手牵着上一个节点,右手牵着下一个节点。

    2.注意,需要单独弄个结构体,知道头节点和尾节点。然后头节点一直顺着右手,就可以找到尾节点,从而遍历所有的成员

    program MyPoint;  //指针详解
    {$APPTYPE CONSOLE}
    uses
      SysUtils,windows,Generics.Collections ;
    
    {双向链表}
    procedure MyFunc8();
    type
      PNode = ^MyNode;  //定义指针
      MyNode = record   //节点
       Text: string;
       Forw: PNode;     //前节点
       Next: PNode;   //后节点
      end;
      MyCurrNote = record //标志
        Head: pNode;      //头
        Last: pNode;      //end;
    var
      I: Integer;
      OldNode , MyNewNode : PNode;//用来新建的节点
      Info :MyCurrNote;//指向头尾
      InsertNote,temNote : PNode;
    begin
    {初始化头尾节点}
       OldNode := nil;Info.Head := nil;//头
        Info.Last := nil;//{创建双向链表}
       for I := 0 to 99 do
       begin
          New(MyNewNode);
          MyNewNode.Text := IntToStr(I);
          if Assigned(OldNode) then OldNode.Next := MyNewNode  //旧节点右手拉新节点
          else Info.Head := MyNewNode;//头节点
          MyNewNode.Forw := OldNode;//新节点左手拉旧节点
          OldNode := MyNewNode;     //新节点变成旧节点,指定尾节点
          Info.Last := OldNode; //尾
          Info.Last.Next := nil;//尾节点右手为空
       end;
       while Assigned(Info.Head) do //头节点遍历
       begin
         Writeln(info.Head.Text);
         Info.Head := Info.Head.Next;
       end;
       while Assigned(Info.Last) do //尾节点遍历
       begin
         Writeln(Info.Last.Text);
         Info.Last := Info.Last.Forw;
       end;
    end;
    
    
    {main主函数}
    begin
     MyFunc8();
     Readln;//回车退出
    end.
  • 相关阅读:
    如何操作3D中的摄像机
    软件开发的未来,是MDA/MDD/面向模式/Plugin IDE吗?[转]
    Hibernate3一个不错的入门介绍
    C#中的== Equals 与 Java 的== Euqals
    The Attributes property of a ListItem control only works within an HtmlSelect control
    WebWork 与 Struts
    会计基本流程
    常用 js 函数
    SQL中的sysobjects与syscolumns
    一个Struts2的的辅助工具
  • 原文地址:https://www.cnblogs.com/GodPan/p/3390147.html
Copyright © 2011-2022 走看看