實現乙個佇列的資料結構,具有:入隊、出隊、檢視隊尾首元素、檢視佇列大小等功能。
# -*- coding:utf-8 -*-
'''陣列實現佇列
'''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
#返回佇列首元素--front記錄佇列首元素的位置
def getfront(self):
if self.isempty():
return none
return self.arr[self.front]
#返回佇列尾元素--rear記錄佇列尾元素往後乙個位置
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 #出隊只需執行front+ 即可
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()))
queue.dequeue()
queue.dequeue()
print("佇列大小為:" + str(queue.size()))
執行結果:
隊頭元素為:1
隊尾元素為: 2
佇列大小為:2
佇列大小為:0
'''
鍊錶實現佇列
'''class lnode():
def __init__(self):
self.data = none
self.next = none
class myqueue():
#分配頭結點
def __init__(self):
self.phead = none #phead指向佇列首元素
self.pend = none #pend指向佇列尾元素
#判斷佇列是否為空,如果為空返回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 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(10)
queue.enqueue(20)
print("佇列頭元素為:"+str(queue.getfront()))
print("佇列尾元素為:"+str(queue.getback()))
print("佇列大小為:"+str(queue.size()))
執行結果:
佇列頭元素為:10
佇列尾元素為:20
佇列大小為:2
方法一:缺點:出佇列後陣列前半部分空間不能被充分地利用,解決這個問題的方法為把陣列看成乙個迴圈佇列。當陣列最後乙個位置被占用後,可以從陣列首位置開始迴圈利用。
方法二:用鍊錶來實現佇列有更好的靈活性,與陣列實現方法相比,它多了用來儲存結點關係的指標空間。此外。也可以用迴圈鍊錶來實現佇列,這樣只需要乙個指向鍊錶最後乙個元素的指標即可,因為通過指向鍊錶尾元素可以非常容易地找到鍊錶的首結點。
python實現基本演算法
classnode object 建立節點類 def init self elem 1 lchild none,rchild none self.elem elem self.lchild lchild self.rchild rchild 就是每次將樹中的節點依次取出來,放入佇列,判斷 class...
實現環形佇列各種基本運算的演算法
實現環形佇列各種基本運算的演算法 目的 領會環形佇列儲存結構和掌握環形佇列中各種基本運算演算法設計 主要功能 1 初始化佇列q 2 判斷佇列q是否非空 3 依次進隊元素a b c 4 出隊乙個元素,輸出該元素 5 依次進隊元素d e f 6 輸出出隊序列 7 釋放佇列 include include...
基本排序演算法 Python實現
基本排序演算法,包括氣泡排序,插入排序,選擇排序,堆排序,快速排序等。氣泡排序 複雜度是n n coding utf8 author haxtraz description 氣泡排序 def bubblesort1 a 每次找到乙個最小元素,放到陣列首部 n len a for i in range...