問題解決
迴圈佇列來解決.迴圈佇列來解決.
使用乙個計數器count, 初始化為0, 入佇列加一, 出佇列減一 ,當count == queue_size, 則判斷佇列滿下面使用第二種方法實現利用乙個flag標記, true代表入佇列, false代表出佇列, 初始化為false. 當head == tail, 如果flag為true, 則隊伍滿.
浪費乙個空間, 如果head == tail, 則為空; 如果 (tail + 1) %queue_size == head 則滿.
初始化 :#include
#include
#define queue_size 8
typedef
int elemtype;
typedef
enum
status;
typedef
struct queueloopqueue,
*loopqueueptr;
時間複雜度: o(1)
清空 :status initqueue
(loopqueueptr queue_ptr)
else
}return s;
}
時間複雜度: o(1)
銷毀 :void
clearqueue
(loopqueueptr queue_ptr)
}
時間複雜度: o(1)
入佇列 :void
destroyqueue
(loopqueueptr queue_ptr)
}
時間複雜度: o(1)
出佇列 :status pushqueue
(loopqueueptr queue_ptr,
int ele)
else
return s;
}
時間複雜度: o(1)
判斷佇列滿 :status popqueue
(loopqueueptr queue_ptr,
int*ele)
else
return s;
}
時間複雜度: o(1)
判斷佇列空 :bool isfull
(loopqueueptr queue_ptr)
時間複雜度: o(1)
獲取佇列大小 :bool isempty
(loopqueueptr queue_ptr)
時間複雜度: o(1)
列印佇列 :int
getlength
(loopqueueptr queue_ptr)
時間複雜度: o(1)
void
printqueue
(loopqueueptr queue_ptr)
printf
("\n");
}}
資料結構 佇列實現(順序迴圈佇列 鏈式佇列)
佇列的介面 public inte ce qqueue 存在假溢位問題!不建議使用 使用模擬迴圈的方式避免假溢位 實現 package pers.zhang.queue author zhang date 2020 1 17 11 45 順序迴圈佇列 public class seqqueue im...
佇列 順序儲存結構,迴圈佇列
為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...
迴圈佇列(順序佇列)的實現
迴圈佇列 順序佇列 的實現 include include include include define n 6 定義資料型別 typedef int datatype t 定義結構體 typedef structsequeue t sequeue t sq 建立乙個空的佇列 sequeue t s...