数据库之双向链表
来源:互联网 发布: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);
四、有点和缺点
优点:双向链表在单链表的基础上增加了指向前驱的指针,功能上双向链表可以完全取代单链表的使用,循环链表的Next,Pre和Current操作可以高效的遍历链表中的所有元素;
缺点:代码复杂
0 0
- 数据库之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- c++之双向链表
- 数据结构之双向链表
- 单链表之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- 数据结构之双向链表
- LiteOS之双向链表
- 链表源码之双向链表
- 线性表之双向链表
- 线性表之双向循环链表
- 线性表之双向链表
- 数据结构学习之双向链表
- ETL概述
- oracle数据库备份与还原
- memcached 线程总结
- Android系统下载管理DownloadManager功能介绍及使用示例
- 关于学习和代码
- 数据库之双向链表
- VS2013 编译程序时报无法加载PDB文件错误解决方案
- 用eclipse 开发play
- Spring MVC+Mybatis+Maven+Velocity+Mysql
- 深入理解DIP、IoC、DI以及IoC容器
- iOS开发图片控件(ImageView)绑定代码并显示一张图片
- 字符串训练------UVA 409题目 Excuses, Excuses!
- GIT和SVN之间的五个基本区别
- qss样式