栈
特点:先进后出
新手可以先学习下栈的概念,然后从实例中理解栈的应用
Python实现栈
# 双端队列(链表式)实现栈
# 继承双端队列,即可简单通过链表形式实现栈,看不懂的同学可以温习我的文章双端队列和双端循环链表的实现
# 底层其实就是已链表形式实现进栈出栈
from queue import DoubleQueue
class Stack(DoubleQueue):
def push(self, value):
self.queue_append(value)
def pop_(self):
self.pop()
# 数组实现栈
# 运用python数组,实现栈,同时拓展出栈溢出和get栈顶的方法
class ArrayStack():
def __init__(self, max_length=10):
self.max_length = max_length
self.list = []
self.stack_top = -1
def __len__(self):
return len(self.list)
def push(self, value):
if self.stack_top == self.max_length - 1:
raise Exception("Stack Over Flow") #设置最大栈内存空间,超出即溢出
else:
self.list.append(value)
self.stack_top += 1
def pop(self):
if self.stack_top == -1:
raise Exception("Stack Empty")
else:
self.list.pop()
self.stack_top -= 1
def lists(self):
return self.list
#得到栈顶,通过栈顶索引得到list栈顶元素位置
def get_stack_top(self):
return self.stack_top