1. 程式人生 > 實用技巧 >資料結構 之 '棧'

資料結構 之 '棧'

"棧“者,儲存貨物或供旅客住宿的地方,可引申為倉庫、中轉站,所以引入到計算機領域裡,就是指資料暫時儲存的地方,所以才有進棧、出棧的說法

一、概念

棧(stack)又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表,這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其下方的元素成為新的棧頂元素

二、棧的特點:後進先出

棧的程式碼實現

class Stack():
    def __init__(self):
        """
        初始化棧(以列表充當此資料結構的容器)
        """
        self.items = []

    def push(self, item):
        """
        進棧(由棧頂至棧底新增)
        :param item: 被新增元素
        :return:
        """
        self.items.append(item)

    def pop(self):
        """
        出棧(由棧頂向棧底取元素)
        :return: 取出的元素
        """
        return self.items.pop()

    def isEmpty(self):
        """
        空棧
        :return: 若為空棧,則返回空列表
        """
        return self.items == []

    def size(self):
        """
        棧中元素個數
        :return:
        """
        return len(self.items)

    def peek(self):
        """
        得到棧頂元素的下標
        :return:
        """
        return len(self.items) - 1


if __name__ == '__main__':
    s = Stack()
    s.push(1)
    s.push(2)
    s.push(3)

    print(s.pop())
    print(s.pop())
    print(s.pop())


# 3
# 2
# 1

# 棧這種資料結構的特點即:後進先出