吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3911|回复: 1
收起左侧

[其他转载] Delphi 单链表类 ,更新了一下类的定义

 关闭 [复制链接]
daydream 发表于 2012-9-13 13:41
本帖最后由 daydream 于 2012-9-19 17:22 编辑
type
 PNode = ^TNode;
 TNode = record
   preNode   : PNode;
   nextNode  : PNode;
   ObjData   : Tobject;
   intIndex  : Integer;             //用作索引
   strIndex  : String;              //用作索引
 end;
 
 
 TLinkList = class
 private
   HeadNode  : PNode;
   HMutex    : THandle;                      //互斥锁,保证在多线程中,不重入
   inumber   : Integer;
 protected
   function GetTail : PNode;
 public
   property    Head: PNode read HeadNode;    //头结点
   property    Tail: PNode read GetTail;
   property    Count : Integer read inumber; //结点个数
 
   //得到前后的结点
   function    GetNextNode(const node:PNode):PNode;
   function    GetPreNode(const node:PNode):PNode;
 
   //插入删除结点
   procedure   AddItem(const Obj:TObject;
             const integerIndex:Integer=0;
             const stringIndex:string='';
             const ToTail:Boolean=true);
   function    DelItem(node  : PNode):Boolean;
 
   //索引结点
   function    IndexOfInteger(const ivalue : Integer):PNode;
   function    IndexOfString(const strvalue : String):PNode;
   function    IndexOfObject(const objvalue : TObject):PNode;
 
   function    IsEmpty:Boolean;
   procedure   Clear;
   
   constructor Create;
   destructor  Free;
 end;
[/code]测试代码
var
   i : integer;
   P : PNode;
 begin
   list := TLinkList.Create;
   i:=3;
   list.AddItem(TObject(i));
   i:=4;
   list.AddItem(TObject(i));
   P := list.Head;
   list.DelItem(P^.nextNode);
   P := list.Head^.nextNode;
   while P<>nil do
   begin
     ShowMessage(IntToStr(Integer(P^.ObjData)));
     P :=P^.nextNode;
   end;
   list.Free;
 end;

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| daydream 发表于 2012-9-17 09:37
type
   PDataRecore = ^TDataRecord;
   TDataRecord = record
     iInt : Integer;
     sStr : String;
   end;

var
    i : integer;
    P : PNode;
    data : PDataRecore;
 begin
     list := TLinkList.Create;
    New(data);
    data^.iInt := 1;
    data^.sStr := 'str';
    list.AddItem(TObject(data));
    New(data);
    data^.iInt := 2;
    data^.sStr := 'sstr';
    list.AddItem(TObject(data));
    P := list.Head^.nextNode;
    while P<>nil do
    begin
      data  := Pointer(P^.ObjData);
      ShowMessage(data^.sStr);
      P :=P^.nextNode;
    end;
    list.Free;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表