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

2021-10-06 02:38:29 字數 1722 閱讀 4170

如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標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()

;/* 裁判實現,細節不表 */

intmain()

}return0;

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

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 full32

10

這道題沒有q.rear指標,但是這道題有了q.count用來計數。這時候我們就用q.front+q.count可以實現q.front+q.rear的效果。

q.count代表佇列中元素個數

此時我們發現q.front+q.count正好可以表示要插入元素的位置

bool addq

( queue q, elementtype x )

else

}elementtype deleteq

( queue q )

else

}

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

6 7 另類迴圈佇列 20 分 時間限制 400 ms 記憶體限制 64 mb 長度限制 16 kb 如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。bool addq queue q,elem...

資料結構 迴圈佇列 C語言

2 迴圈佇列源 及測試 佇列,顧名思義就像我們平時排隊打飯一樣,隊尾有人不斷來排隊打飯,隊頭不斷有人打完飯離開隊頭 順序佇列用順序儲存結構,即陣列儲存,分別包含倆個變數front和rear分別代表隊頭和隊尾,為了防止陣列越界溢位,我們將順序佇列變成乙個環狀的空間,即迴圈佇列,超出陣列界隊尾重新回到陣...

C語言資料結構之迴圈佇列

include define max 5 typedef struct queue queue initqueue queue q int isfull queue q else int isempty queue q else int insertelement queue q,int eleme...