3 4 雙端佇列 20分 技巧

2021-10-25 00:16:33 字數 2034 閱讀 5187

別人的想法:

點撥挺大的,又是一種新鮮的思路。

我們平時習慣front指向隊首的前乙個資料,rear指向最後乙個資料。這道題需要反著來,front指向隊首的第乙個資料,而rear指向最後乙個資料的下乙個結點。

bool push

( elementtype x, deque d )

;elementtype pop

( deque d )

;bool inject

( elementtype x, deque d )

;elementtype eject

( deque d )

;

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;

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

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:

45

特別注意一下最後頭尾指標的改變,這是迴圈佇列(我感覺大部分都是迴圈佇列),頭尾均可插入和刪除,不要出現負數!!!

bool push

( elementtype x, deque d )

elementtype pop

( deque d )

bool inject

( elementtype x, deque d )

elementtype eject

( deque d )

3 4 雙端佇列 20分

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

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

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