您的位置:首页 > 数据库

数据库之双向链表

2015-07-28 10:02 447 查看
一、双向链表的定义

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

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);

四、有点和缺点

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

缺点:代码复杂
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构