天天看點

資料結構 之 '棧'

棧這種資料結構是一種運算受限的線性表。。。

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

一、概念

棧(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

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

抟扶搖而上者九萬裡