顺序存储和链式存储
一、数据结构
数据结构 数据结构是计算机存储、组织数据的方式(规则)数据结构是指相互之间存在一种或多种特定关系的数据元素的集合比如自定义的一个 类 也可以称为一种数据结构 自己定义的数据组合规则 不要把数据结构想的太复杂简单点理解,就是人定义的 存储数据 和 表示数据之间关系 的规则而已 常用的数据结构(前辈总结和制定的一些经典规则) 数组、栈、队列、链表、树、图、堆、散列表
二、线性表
线性表是一种数据结构,是中个具有相同特性的数据元素的有限序列 比如数组、ArrayList、stack、Queue、链表等等
三、顺序存储
数组、stack、Queue、List、ArrayList-顺序存储只是 数组、stack、queue 的 组织规则不同而已顺序存储: 用一组地址连续的存储单元依次存储线性表的各个数据元素
四、链式存储
单向链表、双向链表、循环链表 链式存储(链接存储):用一组任意的存储单元存储线性表中的各个数据元素
五、最简单的单向列表的实现
2024-09-05 100812.png
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| class LinkedNode<T> { public T value; public LinkedNode<T> nextNode;
public LinkedNode(int value) { this.value = value; } } class LindedList<T> { public LinkedNode<T> head; private LinkedNode<T> last; public void Add(T value) { LinkedNode<T> node= new LinkedNode<T>(value); if( heac== null ) { head = node; last = node; } else { last.nextNode = node; last = node; } }
public Remove(T value) { if(head == null) return; if(head.value.Equals(value)) { head = head.nextNode; if(head == null) { last = null; } return; } LinkedNode<T> node = head; while(node.nextNode != null) { if( node.nextNode.value.Equals(value)) {
node.nextNode = node.nextNode.nextNode; break; } node = node.nextNode; } } }
|
六、优缺点
从增删查改的角度去思考
- 增:链式存储 计算上 优于顺序存储(中间插入时链式不用像顺序一样去移动位置)
- 删:链式存储 计算上 优于顺序存储(中间删除时链式不用像顺序一样去移动位置)
- 查:顺序存储 使用上 优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)
- 改:顺序存储 使用上 优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)