資料結構 堆疊佇列 另類迴圈佇列

2021-09-12 15:16:12 字數 1625 閱讀 2621

6-7 另類迴圈佇列 (20 分)

時間限制: 400 ms       記憶體限制: 64 mb          **長度限制: 16 kb

如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。

bool addq( queue q, elementtype x );

elementtype deleteq( queue q );

其中queue結構定義如下:

typedef int position;

typedef struct qnode *ptrtoqnode;

struct qnode ;

typedef ptrtoqnode queue;

注意:如果佇列已滿,addq函式必須輸出「queue full」並且返回false;如果佇列是空的,則deleteq函式必須輸出「queue empty」,並且返回error。

#include #include #define error -1

typedef int elementtype;

typedef enum operation;

typedef enum bool;

typedef int position;

typedef struct qnode *ptrtoqnode;

struct qnode ;

typedef ptrtoqnode queue;

queue createqueue( int maxsize )

bool addq( queue q, elementtype x );

elementtype deleteq( queue q );

operation getop(); /* 裁判實現,細節不表 */

int main()

}return 0;

}/* 你的**將被嵌在這裡 */

4

deladd 5

add 4

add 3

deldel

add 2

add 1

add 0

add 10

end

queue empty

5 is out

4 is out

queue full

3 2 1 0

bool addq( queue q, elementtype x )

q->data[(q->front + q->count++) % q->maxsize] = x;

return true;

}elementtype deleteq( queue q )

elementtype d = q->data[(q->front) ++];

(q->count) --;

(q->front) %= q->maxsize;

return d;

}

另類迴圈佇列 資料結構 C語言

如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作 bool addq queue q,elementtype x elementtype deleteq queue q 其中queue結構定義如下...

資料結構 佇列 迴圈佇列

在佇列的陣列實現中,我們很容易發現數在出隊後,陣列的前面部分會有剩餘空間沒有被使用,所以我們為了最大程度的利用固定長度的陣列,我們採用迴圈佇列的儲存方式,這種方式的最大問題在於resize的時候比較麻煩,所以我們不考慮resize的情況。基本結構如下,這裡front指向第乙個元素的位置,rear指向...

資料結構 佇列 迴圈佇列

資料結構 佇列 迴圈佇列 順序儲存 犧牲乙個空間單元來判段佇列滿狀態。q.front q.rear 1 initsize date 2017 4 16 include define elemtype char define initsize 100 typedef structsqqueue voi...