线性结构 -- 栈和队列

版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/83153812

线性结构 – 栈和队列

线性结构是一个有序数据元素的集合。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。

特征:

1.集合中必存在唯一的一个"第一个元素";
2.集合中必存在唯一的一个"最后的元素";
3.除最后元素之外,其它数据元素均有唯一的"后继";
4.除第一元素之外,其它数据元素均有唯一的"前驱"。

数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。

线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。
顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的,链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息。

主要谈论栈和队列:
栈与队列的相同点:

1. 都是线性结构。
2. 插入操作都是限定在表尾进行。
3. 都可以通过顺序结构和链式结构实现。
4. 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
5. 多链栈和多链队列的管理模式可以相同。

栈与队列的不同点:
1.删除数据元素的位置不同:栈的删除操作在表尾(栈顶)进行,队列的删除操作在表头进行。
2.应用场景不同:常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜 索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
3.顺序栈能够实现多栈空间共享,而顺序队列不能。
4.遍历数据的速度不同:栈只能从头部获取数据,也就是最先放入的数据需要遍历整个栈,最后才能取出来;而且遍历数据的时候还需要为数据开辟临时空间,保持数据在遍历前的一致性。而队列则不同,它基于地址指针进行遍历,而且可以从头部或者尾部开始遍历,但不能同时遍历;无需开辟临时空间,因为在遍历的过程中,不影响数据结构,所以其速度要快很多。

猜你喜欢

转载自blog.csdn.net/weixin_42805929/article/details/83153812