数据结构-简单的链表结构
2016-06-02 22:08
211 查看
数据结构–链表
2016/6/1 20:09:05 SeventeenWen链表分为两部分:
数据部分:存储数据的地方
地址部分:保存的是下一个节点的地址
链表只是逻辑上相连,实际内存上是不相连的
单向链表
链表的添加
分配内存空间,没有任何值。给要添加的节点赋值。将空值赋给节点的指针域。
将前一个节点的指针指向添加的节点
链表的插入
分配一块内存空间,没有任何值。给链表的保存数据值的域赋值。
找到要插入的逻辑位置,就是找到要插入的地方。
修改指针指向的位置。
链表的删除
链表删除操作包括删除表头和返回数据,有几种可能1.删除头节点(O(1))
b095
第一个节点的数据暂存在成员变量中
指针Head指向第二个节点
第一个节点等待GC的回收
2.删除尾节点(O(n))
删除尾节点的数据。
调整指针位置,直接向后移动是不可能的,使用for循环从开始查找尾节点的指针位置。
尾节点等待GC回收
3.删除任意节点
for循环整个链表,找到要删除节点的位置。
再次for循环整个链表,找到要删除节点的前一个节点,是前一节点指向当前节点的下一节点。
删除节点
使用两个指针,一个指向第一个节点,一个指向第二个节点,
for循环,使两个指针都指向下一个节点,循环结束条件第二个指针指向了要删除的节点。
第一个节点指向第二个节点指向的下一个。
要删除的节点等待GC回收
双向链表
定义:双向链表有两个指针域,一个指向前一个,一个指向后一个。添加节点:
初始化链表的三个域。
给节点赋值。
指向下一个域的指针置空。
给定指向上一个域的指针
尾指针指向新节点
前驱节点指向新节点
删除节点
找到要删除的节点,将指向它的上一个节点的指针域的值指向删除节点的下一个节点,隔离要删除的节点。等待GC回收
相关文章推荐
- java数据结构之(顺序栈+链式栈)
- poj--2559 Largest Rectangle in a Histogram(单调栈)
- 数据结构与算法分析(6)表的应用实例
- 数据结构—图的邻接矩阵存储
- 查找算法 - 二分法查找
- 高并发数据结构Disruptor解析(1)
- 使用scala实现pageRank算法
- 排序算法——归并排序(递归)
- 数据结构之线性表
- 数据结构之线性链表
- 二分查找总结
- LabVIEW中实现链表、树等数据结构
- 经典数据结构与算法(五)-哈希表
- 数据结构3.双端链表
- 数据结构学习笔记之模板栈
- 软件设计师数据结构之线性结构复习小结
- POJ3264 Balanced Lineup(线段树静态)
- [数据结构与算法分析]最大子序列和问题 -学习笔记
- 数据结构与算法:数组(一)
- 多叉树的构建及遍历