稀疏数组-队列-链表

一:稀疏数组

如下图,左边就是原始数组,右边就是稀疏数组(总是一个n行3列的数组,注意第一行保存的是原始数组的信息-->原数组有多少行多少列以及多少个有用的值)

 

 

 

 

 

 

 二:队列

队列是一个有序列表,可以用数组链表来实现。其遵循先入先出的原则,在队尾添加数据,在队头删除数据。一般需要两个变量front和rear分别记录队列的头尾下标。

(1)数组模拟非循环队列:(使用一次就不能再用,没有达到复用的效果)注意front表示第一个元素前一个位置,rear指向最后一个元素的位置。

 

 

 (2)数组模拟循环(环形)队列:注意此时数组需要空出一个位置来为后面队列满创造判断条件,防止和队列空的条件一致。比如数组长度为5,则实际存储只能存储4个元素。且当前front和rear得指向也相较于上面发生变化。即front指向第一个元素,rear指向最后一个元素的后一个位置。

 

三:链表(Linked List)

链表是有序的列表(逻辑结构是线性有序的)但是在内存中的存储(物理结构)却不是连续的。它以节点的方式来存储。另外 ,链表分为带头节点的链表和没有头节点的链表,根据实际的需求来确定。

(1)单向链表

单向链表每个节点包含data域(放数据),next域(指向下一个节点)。如果有头节点head则一般不动它,而是通过一个辅助变量指向head代替head操作 。

(2)双向链表

单向链表每个节点包含data域(放数据),pre域(指向上一个节点),next域(指向下一个节点)。

 

 

 (3)环形链表

 

posted @ 2021-03-14 22:14  Only、  阅读(106)  评论(0)    收藏  举报