delphi 双向链表,单向链表,泛型版本

本文详细介绍了如何在 Delphi 编程环境中使用泛型来实现双向链表和单向链表的数据结构。通过泛型的应用,实现了链表的高效、灵活和类型安全的操作,包括插入、删除、遍历等基本操作。对于理解和应用 Delphi 泛型以及数据结构的实践具有指导意义。
摘要由CSDN通过智能技术生成
//链表节点
  TSingleLinkedNode<T> = class
  public
    Value: T;
  private
    m_Next: TSingleLinkedNode<T>;
  end;

  TMYLinkedNode<T> = class
  public
    Value: T;
  private
    m_Prev, m_Next: TMYLinkedNode<T>;
  end;

  //链表池
  TLinkedNodePool = class
  protected
    m_Nodes: TArray<TObject>;
    m_Index: Integer;
    m_Capacity: Integer;
    m_Stoped: Boolean;
    function NewNode: TObject; virtual; abstract;
    procedure FreeNode(node: TObject); virtual; abstract;
    function GetNode: TObject;
    procedure RetNode(node: TObject);
    procedure ReSize;
    procedure Clear;
  public
    constructor Create(nCapacity: Integer = 128); virtual;
    destructor Destroy; override;
  end;

  //单向链表
  TSingleLinked<T> = class(TLinkedNodePool)
  protected
    m_Head: TSingleLinkedNode<T>;
    m_CurrNode: TSingleLinkedNode<T>;
    m_Count: Integer;
    function NewNode: TObject; override;
    procedure FreeNode(node: TObject); override;
    class function Equal(value1, value2: T): Boolean; static;
  public
    destructor Destroy; override;
    procedure Clear;
    procedure Add(value: T);
    function Delete(value: T; allItem: Boolean = False): TSingleLinkedNode<T>;
    function First: TSingleLinkedNode<T>;
    function Next: TSingleLinkedNode<T>;
    property Count: Integer read m_Count;
  end;

  //双链表基类
  TMYLinkedBase<T> = class(TLinkedNodePool)
  protected
    m_Head, m_Tail: TMYLinkedNode<T>;
    m_CurrNode: TMYLinkedNode<T>;
    m_Count: Integer;
    function NewNode: TObject; override;
    procedure FreeNode(node: TObject); override;
    procedure AddT(value: T);
    function DeleteT(value: T; allItem: Boolean = False): TMYLinkedNode<T>;
  public
    constructor Create(nCapacity: Integer = 128); override;
    destructor Destroy; override;
    procedure Clear;
    function DelNode(node: TMYLinkedNode<T>): TMYLinkedNode<T>;
    function First: TMY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值