定义一个两栈共享空间的类,实现以下操作:插入、删除、判断某个栈是否栈空、读取某个栈栈顶元素。
时间: 2024-10-18 18:21:28 浏览: 15
数据结构(C语言版)——共享栈
为了实现一个两栈共享空间的类,我们可以使用两个指针,一个指向第一个栈(我们称为A栈),另一个指向第二个栈(我们称为B栈)。当其中一个栈满了,我们就将新的元素推入另一个栈。以下是基本的伪代码实现:
```python
class TwoStacks:
def __init__(self):
# 初始化两个列表作为栈
self.stack_A = []
self.stack_B = []
# 插入元素到第一个栈
def push_to_stack_A(self, item):
self.stack_A.append(item)
# 插入元素到第二个栈
def push_to_stack_B(self, item):
if len(self.stack_A) == len(self.stack_B): # 当A栈满时
self.stack_B.append(item)
else:
self.stack_A.append(item) # A栈还有空间
# 判断第一个栈是否为空
def is_stack_A_empty(self):
return not bool(self.stack_A)
# 判断第二个栈是否为空
def is_stack_B_empty(self):
return not bool(self.stack_B)
# 从第一个栈弹出并返回栈顶元素(如果有的话)
def pop_from_stack_A(self):
if self.is_stack_A_empty():
raise Exception("Stack A is empty")
return self.stack_A.pop()
# 从第二个栈弹出并返回栈顶元素(如果有的话)
def pop_from_stack_B(self):
if self.is_stack_B_empty():
raise Exception("Stack B is empty")
return self.stack_B.pop()
# 读取第一个栈的栈顶元素(但不删除)
def peek_at_stack_A(self):
if self.is_stack_A_empty():
raise Exception("Stack A is empty")
return self.stack_A[-1]
# 读取第二个栈的栈顶元素(但不删除)
def peek_at_stack_B(self):
if self.is_stack_B_empty():
raise Exception("Stack B is empty")
return self.stack_B[-1]
阅读全文