數據結構之雙端隊列(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")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM