如下结构是用dephi建立的,现在想把它转化为vb形式,不知该如何去做?使此链表可以根据任意已知节点,找到其他节点。
type
PChainNode = ^TChainNode; // 定义PchainNode是一个指向下面record的指针。
TChainNode = record //record是个关键字,从该句往下到end之间的都是record的内容。
Level: Integer; //用于记录层数
Text: string; //记录item_no
Data: Pointer; //备用的,暂时没被用到
Parent: PChainNode; //用于记录父节点
PrevSibling: PChainNode; //用于记录兄弟节点中的前一节点
NextSibling: PChainNode; //用于记录兄弟节点中的后一节点
FirstChildren: PChainNode; //用于记录第一个儿子节点,根据其值是否为空判断是否为叶子节点。
end;
或者各位有什么别的好注意?
type
PChainNode = ^TChainNode; // 定义PchainNode是一个指向下面record的指针。
TChainNode = record //record是个关键字,从该句往下到end之间的都是record的内容。
Level: Integer; //用于记录层数
Text: string; //记录item_no
Data: Pointer; //备用的,暂时没被用到
Parent: PChainNode; //用于记录父节点
PrevSibling: PChainNode; //用于记录兄弟节点中的前一节点
NextSibling: PChainNode; //用于记录兄弟节点中的后一节点
FirstChildren: PChainNode; //用于记录第一个儿子节点,根据其值是否为空判断是否为叶子节点。
end;
或者各位有什么别的好注意?
比如theKey theParent
01
02 01
03 01
04 01.02
05 01.02.04
06
node_level as Integer'结点的层数
node_text as String'结点的内容
node_ID as Long'结点的编号,当做地址来做
Parent_node_ID as Long'父结点的编号,也就是它的地址
Prev_node_ID as Long'前一个兄弟的编号,也就是它的地址
Next_node_ID as Long'后一个兄弟的编号,
Fistr_children_value as Boolen'判断第一个孩子结点的值是否为空
end type
不知道可不可以.
好像就是在计算node_id 的时候比较麻烦.不过楼上的用双亲表示法再改进一下,的确是个不错的方法.
Public Next as Node '指向下一个
Publlc Data as Object '数据类型为Object,允许任何数据类型填充这个属性end class用的时候,记得判断是否为Nothing假设一开始有链表,N为其中一个元素,遍历整个链表遍历寻找链表中 data=5 的元素,并且统计个数显示在debug窗体dim T as new node
set t.prev=n.prev
set t.next=n.next
set t.data=n.datadim i as long do while (not nothing is t.prev)
set t=t.prev
loop '找到头结点do while (not nothing is t.next) '到标尾
if t.data=5 then i=i+1
set t=t.next
loopdebug.print "总共有"+cstr(i)+"个 5"
你说的方法是否需要添加个treeview控件啊?