一、栈和队列的特性:
受限的数据结构
队列(Queue):先进先出 FIFO 【优先队列可以插队】
栈(Stack):后进先出 LIFO【系统的ctrl+z就是维护了一个栈stack】
二、栈:
1.栈的定义:
2.栈的操作:
将数组或链表进行约束就行了
3.栈的应用:
题目一:LeeCode第20题
成功:遇到左括号入栈,遇到右括号就与栈顶匹配,匹配都成功,且最终栈里无数据,成功。
失败:匹配不成功直接失败,如都匹配完后,栈里有剩余数据,则也失败。
java版:
三、队列:
1.队列的定义:
2.队列的操作:
3.循环队列:
循环队列的底层依然是数组
,只不过增加了指针头front
和尾的指针tail
;当tail == capacity时,再添加数据需要判断0位置是否为null,如果为null,则tail指向0位置。(tail+1)%capacity==front时,判断队列已经满,需扩容。
优点:出队删除的时候,不必频繁的移动数据。
4.ArrayQueue与LoopQueue的时间复杂度对比:
数据结构与算法更多相关内容【持续更新中】: