1. 程式人生 > >python小辣雞的逆襲

python小辣雞的逆襲

Python真是強大!C語言描述略微麻煩的棧在Python中用列表實現就變得很簡單,以下是用列表描述棧,包括入棧、出棧、取棧頂元素、獲取棧的長度、輸出棧等操作:


class Stack(object):#定義棧類
    def __init__(self):
        self.__list = []    #初始化操作,定義空列表作棧

    #入棧操作
    def push(self,data):
        self.__list.append(data)    #把列表尾部當作棧頂,即尾插

    # 把列表頭部當作棧頂,頭插,每次都把資料放在列表首部
    # def push(self,data):
    #     self.__list.append(0,data)

    #出棧操作
    def pop(self):
        self.__list.pop()   #從列表的尾部刪除元素即出棧

    # 與之前被註釋的入棧操作相對應,當棧頂是列表頭部時每次出棧即刪除首個元素
    # def pop(self):
    #     self.__list.pop(0)

    #返回棧頂元素
    def Get_top(self):
        #如果列表不為空繼續操作,否則返回None
        if self.__list:
            return self.__list[-1]
        else:
            return None

    #判斷是否是空棧
    def Empty(self):
        if not self.__list:
            return None

    #獲取棧的長度
    def length(self):
        return len(self.__list)

    #輸出整個棧
    def Print(self):
        for x in self.__list:
            print(x)

if __name__ == '__main__':
    s = Stack()
    s.push(3)
    s.push(4)
    s.push(5)
    print("\n該棧是:")
    s.Print()
    print("\n共"+str(s.length())+"個元素\n")	#注意必須是str型別
    print("棧頂元素是:"+str(s.Get_top())+'\n')
    print("是否空棧:"+str(s.Empty())+'\n')
    s.pop()
    s.pop()
    s.pop()
    print("該棧是:")
    s.Print()
    print("\n共" + str(s.length()) + "個元素\n")
    print("棧頂元素是:" + str(s.Get_top()) + '\n')
    print("是否空棧:" + str(s.Empty()) + '\n')

以下是執行結果:

該棧是:
3
4
5

共3個元素

棧頂元素是:5

是否空棧:None

該棧是:

共0個元素

棧頂元素是:None

是否空棧:None