栈和队列

2种特殊的线性表,栈和队列

1. 栈(LIFO,后进先出):

栈和队列_第1张图片

a) 操作示意图:push()操作与pop()操作

栈和队列_第2张图片

b)栈的顺序存储结构:进栈/出栈操作均在数组尾部,时间复杂度=O(1);

i.缺陷:数组长度固定,长度不够时需扩容,消耗资源。

c)两栈共享空间:2个相同类型的栈,且空间需求呈相反关系。

栈和队列_第3张图片

d)栈的链式存储结构:保存栈顶指针,出栈与入栈的时间复杂度=O(1),且没有数据空间的限制

e)栈的应用:四则运算表达式求值


2. 队列(queue)(FIFO,先进先出)

栈和队列_第4张图片

a)示意图:

栈和队列_第5张图片

b)队列的书序存储结构:入列时间复杂度=O(1),出队列时间复杂度=O(n)

栈和队列_第6张图片

c)循环队列:解决出队列操作时间复杂度=O(n)的问题

栈和队列_第7张图片

d)队列的链式存储结构:入/出队列时间复杂度=O(1)


3.总结:在长度确定的情况下,用顺序存储结构;长度变化较大,用链式。

栈和队列_第8张图片

 



你可能感兴趣的:(数据结构)