如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。
函式介面定義:3-3 另類迴圈佇列 (20分)
如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標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 );
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;/* 你的**將被嵌在這裡 */
輸入樣例:
4del
add 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)
q->count--
;int x = q-
>data[q-
>front]
; q-
>front =
(++q-
>front)
% q-
>maxsize;
return x;
}
3 3 另類迴圈佇列 20分
如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。函式介面定義 bool addq queue q,elementtype x elementtype deleteq queue q 其中queu...
3 3 另類迴圈佇列 20分 細節
如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。bool addq queue q,elementtype x elementtype deleteq queue q typedef int p...
6 7 另類迴圈佇列(20 分)
6 7 另類迴圈佇列 20 分 如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作。函式介面定義 bool addq queue q,elementtype x elementtype delete...