如下结构是用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;
或者各位有什么别的好注意?

解决方案 »

  1.   

    很多种方法
    比如theKey      theParent
    01          
    02          01
    03          01
    04          01.02
    05          01.02.04
    06
      

  2.   

    type node
        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 的时候比较麻烦.不过楼上的用双亲表示法再改进一下,的确是个不错的方法.
      

  3.   

    最简单的方法你建立个xml文件,最好的树型结构了
      

  4.   

    class Node     '没有头结点的链表public Prev as Node      '指向上一个
    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"
      

  5.   

    上面那个是通用的,你把data的值设置成TreeNode就可以用了至于TreeNode的建立方法,要看是什么树了
      

  6.   

    to a11s(全面进入.Net DirectX研究中...) :
    你说的方法是否需要添加个treeview控件啊?