一,基础概念
栈是一种存放数据的线性结构容器,栈中的数据元素只能在同一端进行添加和删除等操作。
栈中被用来进行数据读写的一端被称作栈顶,无法进行任何操作的另一端被称为栈底。
元素在栈中的移动顺序依照后进先出(LIFO)原则,较早入栈的元素,更接近栈底,更晚被弹出。
栈结构在生活中的抽象模型有:酒店堆起来的盘子,书架上堆起来的书等,都是从最顶部开始取走和放回的。
二,栈的图示结构
三,栈的常见操作
push: 入栈操作,将数据从栈顶压入。
pop: 出栈操作,从栈顶弹出数据。
peek: 返回栈顶的数据而不删除它。
size: 返回栈中数据的数量。
isEmpty: 检查栈是否为空。
isFull: 检查栈是否已满。
四,栈的代码实现
1.Python语言实现
方式1.使用Python内置数据类型实现:
list, collections.deque, queue.LifoQueue
方式2.封装Stack类来实现
Demo.01: 基于list实现
stack = []
#基于append函数实现入栈操作
stack.append('a')
stack.append('b')
stack.append('c')
print('Initial stack:')
print(stack)
print('\nElements popped from stack:')
#基于pop函数实现出栈操作
print(stack.pop())
print(stack.pop())
print('\nStack after elements are popped:')
print(stack)
Demo.02: 基于deque实现
from collections import deque
stack = deque