class SharedStack:
def __init__(self,maxSize) -> None:
# __val:表示私有变量
self.__maxSize=maxSize
self.__arr=[None]*maxSize
self.__top0=-1
self.__top1=maxSize
def isEmpty(self):
if (self.__top0==-1 and self.__top1==self.__maxSize):
return True
return False
def isFull(self):
if(self.__top0+1==self.__top1) :
return True
else :
return False
def push0(self,x):
if(self.isFull()):
return False
else :
self.__top0+=1
self.__arr[self.__top0]=x
return True
def push1(self,x):
if(self.isFull()):
return False
else :
self.__top1-=1
self.__arr[self.__top1]=x
return True
def pop0(self):
if(self.__top0==-1) :return False
x=self.__arr[self.__top0]
self.__top0-=1
return x
def pop1(self):
if(self.__top1==self.__maxSize): return False
x=self.__arr[self.__top1]
self.__top1+=1
return x
def peek0(self):
if(self.__top0==-1) : return False
x=self.__arr[self.__top0]
return x
def peek1(self):
if(self.__top1==self.__maxSize) : return False
x=self.__arr[self.__top1]
return x
def displayStack(self):
if (self.__top0==-1) : print("stack_0 is empty")
else :
print("stack_0: ",end="")
for i in range(0,self.__top0+1):
print(self.__arr[i],end=" ")
print(" ")
if (self.__top1==self.__maxSize) :print("stack_1 is empty")
else:
print("stack_1: ",end="")
for i in range(self.__maxSize-1,self.__top1-1,-1):
print(self.__arr[i],end=" ")
print(" ")
pass
def test():
stack=SharedStack(10)
for i in range(1,6):
stack.push0(i)
stack.push1(i*10)
print(stack.peek0())
print(stack.peek1())
print(stack.pop0())
print(stack.pop1())
stack.displayStack()
if (__name__=="__main__"):
test()
5
50
5
50
stack_0: 1 2 3 4
stack_1: 10 20 30 40