1. 程式人生 > 其它 >資料結構與演算法 3.棧 Stack

資料結構與演算法 3.棧 Stack

棧 Stack

棧是一種特殊的線性表,只能在一端進行操作
往棧中新增元素的操作,叫做入棧,push
往棧中移除元素的操作,叫做出棧,pop,只能移除棧頂元素,也叫彈出棧頂元素
FILO的結構 First In Last Out

棧的介面設計:
    isEmpty()    判斷棧是否為空
    size()       返回棧中元素數量
    push()       入棧
    pop()        出棧
    peek()       獲取棧頂元素

棧的應用:
    瀏覽器的前進和後退:使用兩個棧,一個用來存放當前訪問及其之前的網址,一個用來存放當前訪問之後的網址
    軟體的撤銷(Undo)和恢復(Redo)
class Stack(object):
    def __init__(self):
        self.items = []

    # 判斷棧是否為空
    def isEmpty(self):
        return self.items == []

    # 獲取棧的長度
    def size(self):
        return len(self.items)

    # 入棧
    def push(self,item):
        self.items.append(item)

    # 出棧
    def pop(self):
        return self.items.pop()

    # 獲取棧頂元素
    def peek(self):
        return self.items[self.size() - 1]

if __name__ == '__main__' :
    stack = Stack()
    stack.push(11)
    stack.push(22)
    stack.push(33)
    stack.push(44)
    res = stack.peek()
    print(res)
    while stack.isEmpty() == False :
        res = stack.pop()
        print(res)

44
44
33
22
11