1. 程式人生 > >用python實現棧

用python實現棧

感覺用python寫棧特別方便,因為不像c/c++那樣要自己寫append之類的函式,列表本身已經自帶了很多函式,純當寫類的練手吧。code:

class Stack:
    def __init__(self,limit=10):#初始化,棧的最大範圍預設是10
        #變數名字前有兩條下劃線,說明是私有變數
        self.__stack=[]
        self.__limit=limit
    def __str__(self):#使用print的時候直接呼叫
        return ''.join([str(i) for i in self.__stack])
    def push(self,data):#入棧
        if len(self.__stack)>=self.__limit:
            self.double_limit()#如果棧的範圍不夠就擴大一倍
        self.__stack.append(data)
    def pop(self):#出棧
        if len(self.__stack)<=0:
            return -1
        else:
            self.__stack.pop()#呼叫python列表自帶的pop
    def peek(self):#返回棧頂的元素
        if len(self.__stack)<=0:
            return -1
        else :
            return self.__stack[-1]
    def is_empty(self):#判斷是否為空
        return self.size()==0
    def size(self):
        return len(self.__stack)
    def double_limit(self):
        self.__limit*=2
#示例程式碼
mystack=Stack()
for i in range(10):
    mystack.push(i)
print(mystack)
mystack.pop()
print(mystack)
print(mystack.peek())
輸出:
0123456789
012345678
8
倒是私有變數這個今天才知道。以上。