Python 数据结构(栈)

 

       可以看到,如果把栈底位置的下标标注为-1, 那么数据1所在的位置下标为0,数据2所在的位置下标为1,;以此类推,数据n所在的位置下标为n-1。实际上,数据1~数据n的存储形式就是列表,只不过这种列表里面的数据操作是受限制的,只能对列表中的最后一个元素进行操作。

 

Python代码实现判断栈空,判断栈满,出栈,入栈操作:

class Stack():
    def __init__(self,size):
        self.data = ["null" for i in range(0,size)] # 初始化长度为(Size)的列表, 赋值给data
        self.size = size                            # 对栈的大小进行初始化
        self.top = -1                               # 对栈顶指针进行初始化

    def Empty(self):
        if self.top==-1:
            return True
        else:
            return False
        
    def Full(self):
        if self.top==self.size - 1:
            return True
        else:
            return False
        
    def push(self, content):
        if self.Full():
            print("栈已满,不允许入栈!")
        else:
            self.top = self.top + 1
            self.data[self.top] = content
        
    def out(self):
        if self.Empty():
            print("栈已空, 不允许出栈!")
        else:
            print(self.data[self.top])
            self.data[self.top] = "null"
            self.top = self.top - 1
            
s = Stack(4)
s.push("Apple")
s.push("Pear")
s.push("Banana")
s.push("Peach")
s.push("Hamimelon")
s.out()
s.out()

 输出:

栈已满,不允许入栈!
Peach
Banana

那么,栈这种数据结构在什么时候才能够应用到呢?

举例子:

       事实上,凡是先进后出的业务逻辑执行流程都可以使用到这种数据结构。不妨假定这样的情景:现在有4个应用程序 A、B、C、D,系统同时最多只能执行一个应用程序,具体执行哪个应用程序由使用者进行选择,此时希望,如果前一个应用程序已经执行,而使用者又开启了一个新的应用程序,系统优先执行新开启的程序,而原程序进入挂起状态,当新开启的程序执行完毕之后,再依次激活原程序进行执行。也就是说,这里程序的执行方案是,新开启的程序优先于已开启的程序执行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章