数据库之双向链表

来源:互联网 发布:js取消绑定事件的方法 编辑:程序博客网 时间:2024/06/05 15:22

一、双向链表的定义

单链表的结点都只有一个指向下一个结点的指针单链表的数据元素无法直接访问其前驱元素逆序访问单链表中的元素是极其耗时的操作!

len = LinkList_Length(list);for (i=len-1; len>=0; i++) //O(n){<span style="white-space:pre"></span>LinkListNode *p = LinkList_Get(list, i); //O(n)<span style="white-space:pre"></span>//访问数据元素p中的元素}
双向链表的定义:在单链表的结点中增加一个指向其前驱的pre指针


二、双向链表功能和操作

创建链表

1.销毁链表

2.获取链表长度

3.清空链表

4.获取第pos个元素操作

5.插入元素到位置pos

6.删除位置pos处的元素


三、设计和实现

1.插入操作

2.删除操作

获取当前游标指向的数据元素

DLinkListNode* DLinkList_Current(DLinkList* list);

将游标重置指向链表中的第一个数据元素

DLinkListNode* DLinkList_Reset(DLinkList* list);

将游标移动指向到链表中的下一个数据元素

DLinkListNode* DLinkList_Next(DLinkList* list);

将游标移动指向到链表中的上一个数据元素

DLinkListNode* DLinkList_Pre(DLinkList* list);

直接指定删除链表中的某个数据元素

DLinkListNode* DLinkList_DeleteNode(DLinkList* list, DLinkListNode* node);


四、有点和缺点

优点:双向链表在单链表的基础上增加了指向前驱的指针,功能上双向链表可以完全取代单链表的使用,循环链表的NextPreCurrent操作可以高效的遍历链表中的所有元素;

缺点:代码复杂






0 0
原创粉丝点击