数据结构之栈Stack与队列Queue

数据结构之栈Stack与队列Queue

一、栈Stack

1、简介
栈相比于数组,栈对应的操作时数组的子集,也是一种线性结构

2、特点
(1)只能从一端添加元素,也只能从一端取出元素,成为栈顶,像玻璃瓶
(2)后进先出的数据结构Last in First Out(LIFO)

3、应用
(1)撤销undo
程序调用的系统栈,记录程序调用过程,将先执行的放在栈底,执行完后的以此退出
(2)括号匹配
栈 { [ ( 此时放入),则左侧(出栈
栈顶元素反应了在嵌套的层次关系中,最近的需要匹配的元素

二、队列Queue

1、简介
队列是相比数组,队列对应的操作是数组的子集,一种线性结构。

2、特点
(1)只能从一端(队尾)添加元素,只能从另一端(队首)取出元素,类似排队买东西
(2)先进先出的数据结构 First In First Out(FIFO)

3、原理
(1)删除队首元素,不移动,front和tail队尾指向变化即可
(2)front == tail队列为空
(3)当达到容量,tail可以移动到前,实现一个循环的状态,充分利用,需要剩余一个空间,tail+1==front则队列满,capacity中浪费一个空间

4、复杂度
(1)触发缩容的操作
(2)采用均摊的方式

5、线性数据结构
动态数组、栈、队列的底层依托静态数组,依靠resize解决固定容量问题

posted @ 2020-03-11 20:05  李泽坤  阅读(93)  评论(0编辑  收藏  举报