1. 程式人生 > >資料結構之雙端佇列(Deque)

資料結構之雙端佇列(Deque)

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")