佇列實現 順序結構2 迴圈佇列

2021-09-05 11:38:46 字數 2039 閱讀 1469

問題解決

迴圈佇列來解決.迴圈佇列來解決.

使用乙個計數器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...