python数据结构(六):顺序栈

class SequenceStack:
    """顺序栈
    """
    top = None

    def __init__(self):
        """初始化顺序栈
        """
        self.MaxStackSize = int(input("输入栈的大小:"))
        self.s = [None for x in range(0, self.MaxStackSize)]
        self.top = -1

    def IsEmptyStack(self):
        """判断栈是否为空
        """
        if self.top == -1:
            return True
        else:
            return False

    def PushStack(self, element):
        """入栈
        """
        if self.top < self.MaxStackSize - 1:
            self.top = self.top + 1
            self.s[self.top] = element
        else:
            print("栈满!")
            self.StackTraverse()
            return

    def PopStack(self):
        """出栈
        """
        if self.IsEmptyStack():
            print("栈空!")
            return
        else:
            iTop = self.top
            self.top = self.top - 1
            return self.s[iTop]

    def StackTraverse(self):
        """遍历顺序栈
        """
        if self.IsEmptyStack():
            print("栈空!")
            return
        else:
            print("当前栈底至栈顶数据分别为:")
            for i in range(0, self.top + 1):
                print(self.s[i], end=' ')
        print("")

    def GetTopStack(self):
        """获取顺序栈顶数据
        """
        if self.IsEmptyStack():
            print("栈空!")
            return
        else:
            return self.s[self.top]

    def GetStackLength(self):
        """获取当前栈长度
        """
        if self.IsEmptyStack():
            print("栈空!")
            return
        else:
            return self.top + 1

    def CreateStackByInput(self):
        """创建顺序栈
        """
        data = input("请输入数据,按#结束:")
        while data != '#':
            self.PushStack(data)
            data = input("请输入数据,按#结束:")
        self.StackTraverse()


ss = SequenceStack()
ss.CreateStackByInput()
element = input("输入入栈数据:")
ss.PushStack(element=element)
print("当前栈长度为:", ss.GetStackLength())
print("当前栈顶数据为:", ss.GetTopStack())
print("出栈数据为:", ss.PopStack())
------------------------------------------------------------
输入栈的大小:10
请输入数据,按#结束:1
请输入数据,按#结束:2
请输入数据,按#结束:3
请输入数据,按#结束:4
请输入数据,按#结束:5
请输入数据,按#结束:#
当前栈底至栈顶数据分别为:
1 2 3 4 5 
输入入栈数据:10
当前栈长度为: 6
当前栈顶数据为: 10
出栈数据为: 10

可添加栈满时动态增加栈大小的操作。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值