1、顺序栈(循环队列)的判空、进栈、出栈、获取栈顶元素(获取队头元素)等基本操作及算法实现。
2、链栈(栈队)的判空、进栈(进队)、出栈(出队)、获取栈顶元素(获取队头元素)等基本操作及算法实现。
3、在顺序栈(顺序队)基本运算的基础上实现相关应用算法。
4、在链栈(链队)基本运算的基础上实现相关应用算法。
参考一下
https://blog.csdn.net/lishundi/article/details/87905666
比较标准的写法,直接抄ChatGPT的答案吧:
顺序栈
class SequentialStack:
def __init__(self, max_size):
self.max_size = max_size
self.stack = [None] * max_size
self.top = 0
def is_empty(self):
return self.top == 0
def is_full(self):
return self.top == self.max_size
def push(self, value):
if self.is_full():
raise ValueError("Stack is full.")
self.stack[self.top] = value
self.top += 1
def pop(self):
if self.is_empty():
raise ValueError("Stack is empty.")
self.top -= 1
value = self.stack[self.top]
self.stack[self.top] = None
return value
def get_top(self):
if self.is_empty():
raise ValueError("Stack is empty.")
return self.stack[self.top-1]
链栈
class Node:
def __init__(self, value=None, next=None):
self.value = value
self.next = next
class LinkedStack:
def __init__(self):
self.top = None
def is_empty(self):
return self.top is None
def push(self, value):
node = Node(value)
node.next = self.top
self.top = node
def pop(self):
if self.is_empty():
raise ValueError("Stack is empty.")
value = self.top.value
self.top = self.top.next
return value
def get_top(self):
if self.is_empty():
raise ValueError("Stack is empty.")
return self.top.value
不知道你这个问题是否已经解决, 如果还没有解决的话: