雙端佇列 25分

2021-10-02 04:56:50 字數 2853 閱讀 1813

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 )

;/* 裁判實現,細節不表 */

intmain()

}return0;

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

輸入樣例:

3pop

inject 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 )

//在頭處插入

d->front=

(--d->front+d->maxsize)

%d->maxsize;

d->data[d->front]

=x;return true;

}bool inject

( elementtype x, deque d )

//在尾部插入

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

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

//想知道為什麼錯了嗎

//因為為空的時候是頭等於尾所以在頭部插入是頭往前走在尾部插入時尾就不用動了插完之後尾巴再後移

d->data[d->rear]

=x;d->rear=

(++d->rear)

%d->maxsize;

return true;

}elementtype pop

( deque d )

//在頭部刪除

int x=d->data[d->front]

; d->front=

(++d->front+d->maxsize)

%d->maxsize;

return x;

}elementtype eject

( deque d )

//在尾部刪除

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

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

//想知道為啥又錯了嗎?

//在尾部插入的時候尾部指標又向前移動了乙個所以要先移回去

d->rear=

(--d->rear+d->maxsize)

%d->maxsize;

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

;return x;

}

雙端佇列 (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...