Python实现共享栈

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

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值