雙端佇列 (25 分

2022-09-08 07:24:10 字數 2252 閱讀 6181

push(x,d):將元素x插入到雙端佇列d的頭;

pop(d):刪除雙端佇列d的頭元素,並返回;

inject(x,d):將元素x插入到雙端佇列d的尾部;

eject(d):刪除雙端佇列d的尾部元素,並返回。

函式介面定義:

bool push( elementtype x, deque d );

elementtype pop( deque d );

bool inject( elementtype x, deque d );

elementtype eject( deque d );

其中deque結構定義如下:

typedef int position;

typedef struct qnode *ptrtoqnode;

struct qnode ;

typedef ptrtoqnode deque;

注意:push和inject應該在正常執行完操作後返回true,或者在出現非正常情況時返回false。當front和rear相等時隊列為空,pop和eject必須返回由裁判程式定義的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 deque;

deque createdeque( int maxsize )

bool push( elementtype x, deque d );

elementtype pop( deque d );

bool inject( elementtype x, deque d );

elementtype eject( deque d );

operation getop(); /* 裁判實現,細節不表 */

void printdeque( deque d ); /* 裁判實現,細節不表 */

int main()

}return 0;

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

輸入樣例:

3

popinject 1

popeject

push 2

push 3

eject

inject 4

inject 5

inject 6

push 7

popend

輸出樣例:

deque is empty!

1 is out

deque is empty!

2 is out

deque is full!

deque is full!

3 is out

inside deque: 4 5

這道題的佇列有點不一樣,一般的佇列是頭指向空,而這個佇列好像是頭和尾都指向空,所以不能按照一般的方法來作判斷對頭。

以下是答案:

bool push(elementtype x, deque d)

elementtype pop(deque d)

elementtype d = d->data[d->front];

d->front = (d->front + 1) % d->maxsize;

return d;

}bool inject(elementtype x, deque d)

d->data[d->rear] = x;

d->rear = (d->rear + 1) % d->maxsize;

return true;

}elementtype eject(deque d)

if (d->rear == 0)

d->rear--;

elementtype n = d->data[d->rear];

return n;

}```

雙端佇列 25分

push x,d 將元素x插入到雙端佇列d的頭 pop d 刪除雙端佇列d的頭元素,並返回 inject x,d 將元素x插入到雙端佇列d的尾部 eject d 刪除雙端佇列d的尾部元素,並返回。函式介面定義 bool push elementtype x,deque d elementtype p...

6 8 雙端佇列 25分

bool push elementtype x,deque d elementtype pop deque d bool inject elementtype x,deque d elementtype eject deque d 其中deque結構定義如下 typedef int position...

習題3 13 雙端佇列 25分

bool push elementtype x,deque d elementtype pop deque d bool inject elementtype x,deque d elementtype eject deque d 其中deque結構定義如下 typedef int position...