数据结构四双向链表
来源:互联网 发布:淘宝有机证书编号 编辑:程序博客网 时间:2024/06/01 08:23
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。而之前的单链表为单向链表,双向链表也就是在单链表的结点中增加一个指向其前驱的pre指针。
如图
这里介绍双向链表的常用操作:
l 创建双向链表
l 销毁双向链表
l 清空双向链表
l 获取表长度
l 把node插入pos位置
l 获取pos位置的元素
l 删除pos位置的元素
l 删除表中与node相同的元素(删除第一个匹配成功的)
l 重置游标
l 返回游标所指向的结点
l 游标后移
l 游标前移
代码总分为三个文件:
DLinkList.h : 放置功能函数的声明,以及表的声明,表结点的定义
DLinkList.c : 放置功能函数的定义,以及表的定义
Main.c : 主函数,使用功能函数完成各种需求,一般用作测试
整体结构图为:
这里详细说下插入操作和删除操作:
插入操作:
如图
插入元素方法:
判断表和插入位置是否合法
由表头开始通过next域移动pos次后,当前元素的next域为要插入的位置
Current的next域指向node
Node的next域指向next
判断是否为尾插,如果不是的话next的pre域指向node
判断是否为头插,如果是的话node的pre域指向NULL
如果之前表为空表,则游标指向插入的结点
表长度加1
删除操作:
如图
删除元素方法:
判断表和插入位置是否合法
由表头开始通过next域移动pos次后,当前元素的next指向的元素为要删除的元素
把current的next域指向next
判断是否为尾插,如果不是的话,next的pre指针指向current
如果不是尾插且是头插的话,next的pre指针指向NULL
如果删除的结点正好游标也指向它,则游标后移
表长度减1
- 数据结构四双向链表
- 数据结构四双向链表
- 数据结构四双向链表
- java数据结构 四(双向链表)
- Java数据结构(四):线性表之双向链表
- 算法与数据结构之四----双向链表
- 数据结构与算法Javascript描述(四)双向链表
- 数据结构(四)双向链表的基本操作
- 数据结构--双向链表
- 数据结构-双向链表
- 数据结构-----双向链表
- 数据结构-双向链表
- 【数据结构】双向链表
- 双向链表 - 数据结构
- 数据结构--双向链表
- 【数据结构】双向链表
- 数据结构-双向链表
- 数据结构--双向链表
- Java 中 Comparable 和 Comparator 比较
- AsyncTask异步实现文件下载
- play的开发文档
- Minimal string
- 无盘完美解决Windows Server 2012 R2 或 2016无法安装 .NET Framework3.5
- 数据结构四双向链表
- 最短路径
- 淘淘商城系列——zookeeper单机版安装
- java基础(1)
- algorithm中sort函数
- hibernate状态
- mybatis--映射器
- 剑指offer--入栈、出栈正确性的判断
- C语言-数据结构-双链表插入查找