習題3 12 另類迴圈佇列 20 分

2021-10-25 21:24:21 字數 1578 閱讀 2966

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