向使用数据库一样,在你的链表结构类型里添加一个RecNo字段,然后根据RecNo来定位,不置可否?

解决方案 »

  1.   

    你的问题是否可理解为如何在链表中迅速定位某个随机的节点?如果是这样,我觉得可能有两种解决办法:
    1、首先你的览表节点中应该有足够的信息,能够在链表节点和报表行之间建立一对一的对应关系,TommyTong(童童)的说法是一个好办法,只是在插入行时需要一点维护量。
    在上面的基础之上,就象你所说的便历链表。或者通过RecNo做二分查找,效率极高。
    2、需要一些辅助信息,即建立一个辅助数组,数组中每个元素存放一个节点的指针,数组的下标对应位报表行。这样做要增加一些维护开销,尤其是在做插入行的操作时。但定位节点效率最高。
    我比较喜欢前者,因为在内存中便利一个几百个节点的链表是很高效的,除非你的链表非常大,几万或几十万节点。
      

  2.   

    如上两位所说,我在链表中增加一个RowID :integer;创建的时候将所在行数赋值给RowID,这样就可以一一对应(当然插入删除的时候要重赋值),但如何去便历链表?这个我不熟悉,能不能给出源码?谢谢