別人的想法:
點撥挺大的,又是一種新鮮的思路。
我們平時習慣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...