如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標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;
}
答案如下:
bool addq
( queue q, elementtype x )
//佇列已滿,退出程式
/*新增元素*/
q->data[
(q->count+q->front)
%q->maxsize]
= x;
//將隊尾元素賦值為x
q->count++
;return true;
}elementtype deleteq
( queue q )
//佇列已空,退出程式
q->count--;if
(q->front+
1== q->maxsize)
else
}
因為此題存在乙個count來記錄佇列中元素的個數,所以覺得沒有必要使得頭指標指向第乙個元素的前乙個位置了,可以直接用count與maxsize是否相等來判斷佇列是否已經滿員 3 12 另類迴圈佇列 20分
如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。函式介面定義 bool addq queue q,elementtype x elementtype deleteq queue q 其中queu...
PTA 習題3 12 另類迴圈佇列
習題3.12 另類迴圈佇列 題目要求 如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。介面 bool addq queue q,elementtype x elementtype deleteq...
6 7 另類迴圈佇列(20 分)
6 7 另類迴圈佇列 20 分 如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。函式介面定義 bool addq queue q,elementtype x elementtype delete...