1.栈【Stack】:是只限定在表的一端进行数据插入和删除的线性表
2.队列【Queue 】:是在表的一端进行数据插入,在表的另一端进行数据的删除的线性表
3.栈和队列都是线性表:线性表只是一种线性结构,内存中存储数据和删除数据的方式
4.栈和队列的相同点和不同点
(1)相同点:
①:栈和队列都是线性表
②: 插入数据都是表尾进行的
③: 都可以通过顺序结构和链式结构实现
④: 插入和删除的时间复杂度和空间复杂度是一样的
(2)不同点:
①:删除数据的位置不同,栈在表尾删除,队列在表头删除
②: 应用场景不同:
a.常用栈的场景:变量的定义、运算表达式、函数的调用、深度优先遍历等
b.常见的队列的应用场景:计算机中各种资源的管理和分配,广度优先遍历等
5. 栈的插入和删除过程:
# 栈: 列表的底层维护了一个栈结构 stack = [] print(stack) # 入栈【向栈中存数据】 : append stack.append(1) print(stack) stack.append(2) print(stack) stack.append(3) print(stack) stack.append(4) print(stack) # 出栈【从栈中取数据】:pop stack.pop() print(stack) stack.pop() print(stack) stack.pop() print(stack) stack.pop() print(stack) """ 特点:先进后出,后进先出 """
运行结果:
5.队列的插入和删除的过程
# 队列 import collections # 创建一个空队列 queue = collections.deque() print(queue) # 入队【向队列中添加数据】:append queue.append(1) print(queue) queue.append(2) print(queue) queue.append(3) print(queue) queue.append(4) print(queue) # 出队【向队列中获取数据】:popleft:表头/ pop:表尾 queue.popleft() print(queue) queue.popleft() print(queue) queue.popleft() print(queue) queue.popleft() print(queue) """ 特点: 先进先出,后进后出 """
运行结果: