題目描述:
實現乙個佇列的資料結構,使其具有入佇列、出佇列、檢視佇列首尾元素、檢視佇列大小功能等。
分析與解答:
與實現棧的方法類似,佇列的實現也有兩種方法,分別為採用陣列來實現和採用鍊錶來實現。
# 實現佇列
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 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...