目錄
1、棧2、棧的實現
3、佇列
4、佇列的實現
5、雙端佇列的實現
棧的特點在於,棧只能從一頭進出,即先進後出,後進先出,對棧的操作:訪問刪除等,都是從棧尾進行的。這種特性適合用來檢測兩兩對應的關係是否匹配。
棧從某種意義上來說是特殊的列表,只是在訪問刪除元素的時候,在規則上比列表多了一些限制。
class stack(object):
#棧def __init__(self):
self.items =
def is_empty(self):
#判斷是否為空
return self.items ==
def push(self, 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)
佇列是與棧相似但是規則相反的一種資料結構,佇列是先進先出,後進後出,從佇列後面新增元素,從佇列前端刪除元素,訪問元素也是從前向後。
目前刷題數量有限還不了解佇列的主要用途。
佇列同樣可以用列表來實現。
class queue(object):
#佇列def __init__(self):
self.items =
def is_empty(self):
return self.items ==
def enqueue(self, item):
#進佇列
self.items.insert(0,item)
def dequeue(self):
#出佇列
return self.items.pop()
def size(self):
#返回大小
return len(self.items)
雙端佇列,具有棧和佇列的兩種特性,既能從前端進出,也能從後端進出。
雙端佇列,也可以用列表來實現。
class deque(object):
#雙端佇列
def __init__(self):
self.items =
def is_empty(self):
#判斷佇列是否為空
return self.items ==
def add_front(self, item):
#在隊頭新增元素
self.items.insert(0,item)
def add_rear(self, item):
#在隊尾新增元素
def remove_front(self):
#從隊頭刪除元素
return self.items.pop(0)
def remove_rear(self):
#從隊尾刪除元素
return self.items.pop()
def size(self):
#返回佇列大小
return len(self.items)
資料結構與演算法 2 棧
2 儲存結構 2.2 鏈式儲存結構 定義 棧是限定僅在表尾進行插入和刪除的線性表。棧是一種線性表。允許插入和刪除的一端稱為棧頂,另一端稱之為棧底。不含任何元素的棧稱之為空棧,並且棧是後進先出。簡稱lifo結構。插入操作稱之為進棧,壓棧,刪除操作稱之為出棧,彈棧。adt 棧 stack data 同線...
python資料結構與演算法 棧
逆波蘭表示式 reverse polish notation 有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。輸入 2 1 3 輸出 9 解釋 2 1 3 9 分析 棧 遍歷陣列,逐漸壓入棧中,如果遇到運算字元,則彈出棧頂兩個元素,之後將計算結果再壓入棧中 class solu...
python資料結構與演算法 棧
棧 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 p...