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): return self.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")