数据结构之python实现栈的顺序存储

定义

栈是一种只能在一端进行操作的线性表,遵循“后进先出(LIFO)”的原则,当栈为空时,栈顶指针top= -1。

python实现

class SequenceStack:
    def __init__(self):
        self.MaxStackSize = 10
        self.s = [None for x in range(0,self.MaxStackSize)]
        self.top = -1
        
    '''判断栈是否为空'''
    def IsEmptyStack(self):
        if self.top == -1:
            iTop = True
        else:
            iTop = False
        return iTop
    '''进栈'''
    def PushStaxk(self,x):
        if self.top < self.MaxStackSize-1:
            self.top = self.top+1
            self.s[self.top] = x
        else:
            print("栈满")
            return
    '''出栈'''
    def PopStack(self):
        if self.IsEmptyStack == True:
            print("栈为空")
            return
        else:
            iTop = self.top
            self.top = self.top-1
            return self.s[iTop]
    '''获取栈顶元素'''
    def GetTopStack(self):
        if self.IsEmptyStack == True:
            print("栈为空")
            return
        else:
            return self.s[self.top]
    '''遍历栈内元素'''
    def StackTraverse(self):
        if self.IsEmptyStack == True:
            print("栈为空")
            return
        else:
            for i in range(0,self.top + 1):
                print(self.s[i],end = ' ')
    '''创建一个顺序栈'''
    def CreateStackByInput(self):
        data = input("请输入元素(确定按回车键,结束按“#”):")
        while data != "#":
            self.PushStaxk(data)
            data = input("请输入元素(确定按回车键,结束按“#”):")
ss = SequenceStack()
ss.CreateStackByInput()
print("栈内元素为:",end = ' ')
ss.StackTraverse()
print("\n栈顶元素为:",ss.GetTopStack())

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40283816/article/details/87890661