是一种特殊的线性集合,对栈的操作都在栈顶【加入数据push,移除数据pop】并且是后进先出的【例如:网页的前进与后退】。

栈分类:实现结构可以是一维数组,链表;当为数组时则为顺序栈,当为链表时则为链式栈。

时间复杂度:假设栈中有n个元素

                访问指定位置时,时间复杂度为O(n)

                入栈和出栈的时间复杂度为O(1)

栈的常见应用场景:

浏览器的前进与后退

虚拟机栈:由栈帧组成,每个栈帧都拥有:局部变量表,操作数栈,动态链接,方法出口信息。

出栈的顺序:

3个元素A,B,C顺序出栈,出栈的情况可分为:

 队列:是一种线性结构【隧道里面的行驶车辆】先入先出。

队列的出口端叫做队头,则入口端叫做队尾,队列只允许在队头进行出队操作;在队尾进行入队操作。

队列的分类:单队列,循环队列。

时间复杂度:假设队列中有n个元素

                访问指定元素的时间复杂度O(n)

                插入删除元素的时间复杂度O(1)

数组实现的队列叫做顺序队列;链表实现的队列叫做链式队列。

使用循环队列可以避免假溢出。

队列的应用场景:

        KTV点歌列表

        阻塞队列

        线程池的任务队列

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐