1.棧:一種特殊的線性表,其實只允許在固定的一端進行插入或刪除操作。進行數據插入和刪除的一端稱為棧頂,另一端稱為棧底。不含任何元素的棧稱為空棧,棧又稱為后進先出的線性表。

特性棧:后進先出(LILO)特殊線性表
棧功能:將數據從一種序列改變為另一種序列
2.順序棧和順序表數據成員相同,不同之處:
順序棧的入棧和出棧操作只允許對當前棧頂進行操作!

順序棧所有的的操作時間復雜度為O(1)
注意:面試中如果需要用到棧,封裝靜態棧。
3.棧結構實現
棧可以用順序表實現,也可以用鏈表實現。
4.棧的操作
Stack() 創建一個新的空棧
push(item) 添加一個新的元素item到棧頂
pop() 彈出棧頂元素
peek() 返回棧頂元素
is_empty() 判斷棧是否為空
size() 返回棧的元素個數
class Stack(object): """棧""" def __init__(self): self.items = [] def is_empty(self): """判斷是否為空""" return self.items == [] def push(self, item): """加入元素""" self.items.append(item) def pop(self): """彈出元素""" return self.items.pop() def peek(self): """返回棧頂元素""" return self.items[len(self.items)-1] def size(self): """返回棧的大小""" return len(self.items) if __name__ == "__main__": stack = Stack() stack.push("hello") stack.push("world") stack.push("itcast") print stack.size() print stack.peek() print stack.pop() print stack.pop() print stack.pop()