2-5 two stacks in one array
时间: 2023-05-01 18:06:25 浏览: 86
数据结构作业打印cp81
B'2-5 两个栈在一个数组中'
题目大意:设计一种数据结构,要求在一个数组内实现两个栈。
解题思路:可以采用数组的两端分别为一个栈的方式,也就是将数组的0号位置作为第一个栈的栈底,n-1位置作为第二个栈的栈底。栈顶分别向数组的中心移动,当两个栈顶相遇时,即为栈满的情况。
代码实现:
class TwoStacks:
def __init__(self, n):
self.array = [None] * n
self.top1 = -1
self.top2 = n
def push1(self, x):
if self.top1 + 1 == self.top2:
print("Stack Overflow")
else:
self.top1 += 1
self.array[self.top1] = x
def push2(self, x):
if self.top1 + 1 == self.top2:
print("Stack Overflow")
else:
self.top2 -= 1
self.array[self.top2] = x
def pop1(self):
if self.top1 == -1:
print("Stack Underflow")
else:
x = self.array[self.top1]
self.array[self.top1] = None
self.top1 -= 1
return x
def pop2(self):
if self.top2 == n:
print("Stack Underflow")
else:
x = self.array[self.top2]
self.array[self.top2] = None
self.top2 += 1
return x
n = 10
ts = TwoStacks(n)
ts.push1(1)
ts.push2(2)
ts.push1(3)
ts.push2(4)
ts.push1(5)
ts.push2(6)
print(ts.pop1())
print(ts.pop2())
阅读全文