程式設計師面試演算法寶典 2 2 如何實現佇列

2021-09-12 11:47:29 字數 2715 閱讀 5623

題目描述:

實現乙個佇列的資料結構,使其具有入佇列、出佇列、檢視佇列首尾元素、檢視佇列大小功能等。

分析與解答:

與實現棧的方法類似,佇列的實現也有兩種方法,分別為採用陣列來實現和採用鍊錶來實現。

# 實現佇列

class myqueue():

def __init__(self):

self.arr=

self.front=0 # 佇列頭

self.rear=0 #佇列尾

# 判斷佇列是否為空

def isempty(self):

return self.front == self.rear

# 返回佇列的大小

def size(self):

return self.rear-self.front

# 返回佇列首元素

def getfront(self):

if self.isempty():

return none

return self.arr[self.front]

# 返回佇列尾元素

def getback(self):

if self.isempty():

return none

return self.arr[self.rear-1]

# 刪除佇列頭元素

def dequeue(self):

if self.rear > self.front:

self.front += 1

else:

print("佇列已經為空")

# 把新元素加入隊尾

def enqueue(self, item):

self.rear += 1

# if __name__=="__main__":

# queue = myqueue()

# queue.enqueue(1)

# queue.enqueue(2)

# print("佇列的頭元素為:"+str(queue.getfront()))

# print("佇列的尾元素為:"+str(queue.getback()))

# print("佇列的大小為:"+str(queue.size()))

"""鍊錶實現佇列"""

class lnode():

def __init__(self):

self.data = none

self.next = none

class myqueue:

# 分配頭結點

def __init__(self):

self.phead=none

self.pend=none

# 判斷佇列是否為空,如果為空返回true,否則返回false

def empty(self):

if self.phead == none:

return true

else:

return false

# 獲取棧中元素的個數

def size(self):

size = 0

p = self.phead

while p != none:

p = p.next

size += 1

return size

# 入佇列:把元素e加到佇列尾

def enqueue(self, e):

p = lnode()

p.data = e

p.next = none

if self.phead == none:

self.phead = self.pend = p

else:

self.pend.next = p

self.pend = p

# 出佇列,刪除佇列首元素

def dequeue(self):

if self.phead == none:

print("出佇列失敗,佇列已經為空")

self.phead = self.phead.next

if self.phead == none:

self.pend = none

# 取得佇列首元素

def getfront(self):

if self.phead == none:

print("獲取佇列首元素失敗,佇列已經為空")

return none

return self.phead.data

# 獲取佇列尾元素

def getback(self):

if self.pend == none:

print("獲取佇列尾元素失敗,佇列已經為空")

return none

return self.pend.data

if __name__=="__main__":

queue = myqueue()

queue.enqueue(1)

queue.enqueue(2)

print("佇列的頭元素為:"+str(queue.getfront()))

print("佇列的尾元素為:"+str(queue.getback()))

print("佇列的大小為:"+str(queue.size()))

Go程式設計師面試演算法寶典 讀後感2 鍊錶

鍊錶作為最基本的資料結構,它不僅僅在實際應用中有著非常重要的作用,而且也是程式設計師面試筆試必考的內容。詳情請google吧。1 如何實現鍊錶的逆序 就地逆序 引入定義的資料結構 帶頭結點的逆序 func reverse node lnode var pre lnode 定義前驅結點 var cur...

Go程式設計師面試演算法寶典 讀後感2 鍊錶

鍊錶作為最基本的資料結構,它不僅僅在實際應用中有著非常重要的作用,而且也是程式設計師面試筆試必考的內容。詳情請google吧。1 如何實現鍊錶的逆序 就地逆序 引入定義的資料結構 帶頭結點的逆序 func reverse node lnode var pre lnode 定義前驅結點 var cur...

程式設計師面試寶典

據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...