3 3 另類迴圈佇列 20分 HBU DS

2021-10-24 20:44:38 字數 2861 閱讀 9761

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