資料結構之雙端佇列(Deque)
阿新 • • 發佈:2018-11-29
1,雙端佇列定義
雙端佇列:其兩端都可以入列和出列的資料結構,如下圖所示,佇列後面(rear)可以加入和移出資料,佇列前面(front)可以加入和移出資料
雙端佇列操作:
deque=Deque() # 建立雙端佇列 addFront(item) #在佇列前面加入資料 addRear(item) #在佇列後面加入資料 removeFront() #在佇列前面移除資料 removeRear() #在佇列後面移除資料 isEmpty() #返回佇列是否為空 size() #返回佇列大小
操作示例:
2, 用python實現雙端佇列
Deque的程式碼實現如下:
class Deque(object): def __init__(self): self.items=[] def addFront(self,item): self.items.append(item) def addRear(self,item): self.items.insert(0, item) def removeFront(self): returnself.items.pop() def removeRear(self): return self.items.pop(0) def size(self): return len(self.items) def isEmpty(self): return self.items==[]
3,Deque的應用
迴文檢查(Palindrome checker):檢查字元序列是否為迴文(迴文指正讀和反讀都相同的字元序列,如 madam, 123321)。實現程式碼如下:
#檢測字元序列是否為迴文 def palChecker(palString): dq = Deque() for i in palString: dq.addFront(i) while dq.size()>1: first = dq.removeFront() last = dq.removeRear() if first!=last: return False return True print palChecker("lsdkjfskf") print palChecker("radar")