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...