在九度ac了一道還算不錯的佇列題目,記錄一下,陣列實現的迴圈佇列
題目描述:大家都知道資料結構裡面有乙個結構叫做迴圈佇列。顧名思義,這是乙個佇列,並且是迴圈的。但是現在,淘氣的囧哥給這個迴圈佇列加上了一些規矩,其中有5條指令:
(1)push k, 讓元素k進佇列。
(2)pop,對頭元素出佇列。
(3)query k,查詢佇列中第k個元素,注意k的合法性。
(4)isempty,判斷佇列是否為空。
(5)isfull,判斷佇列是否已滿。
現在有n行指令,並且告訴你佇列大小是m。
輸入:第一行包含兩個整數n和m。1<=n,m<=100000。
接下來有n行,表示指令,指令格式見題目描述。
其中元素均在int範圍。
輸出:對於指令(1),若佇列已滿,輸出failed,否則不做輸出。
對於指令(2),若佇列已空,輸出failed,否則不做輸出。
對於指令(3),輸出佇列中第k個元素,若不存在,輸出failed。
對於指令(4)和(5),則用yes或者no回答。
詳情見樣例。
樣例輸入:
12 2push 1push 2push 3query 2query 3isemptyisfullpoppoppopisemptyisfull
樣例輸出:
failed2failednoyesfailedyesno
#include #include #include #define queuesize 100001 //最大佇列長度
struct queue
;void initqueue(struct queue *q);
void enqueue(struct queue *q, int element, int m);
void dequeue(struct queue *q, int m);
void queuesearch(struct queue *q, int k, int m);
int main()
else if (strcmp(command,"pop") == 0)
else if (strcmp(command,"query") == 0)
else if (strcmp(command,"isempty") == 0)
else
}else if (strcmp(command,"isfull") == 0)
else
}} }
return 0;
}/**
* description:佇列初始化
*/void initqueue(struct queue *q)
/** * description:入隊操作
*/void enqueue(struct queue *q, int element, int m)
else }
/** * description:出隊操作
*/void dequeue(struct queue *q, int m)
else }
/** * description:查詢佇列中的指定元素
*/void queuesearch(struct queue *q, int k, int m)
else
}
不一樣的for迴圈
提到for迴圈,我們肯定就想到一種寫法 for int x 0 x 3 x 這是一種很常見的寫法,但是使用for迴圈,我們都形成了一種固化的思維,其實for迴圈也可以很不一樣。for迴圈的格式是這樣的 for 初始化表示式 迴圈條件表示式 迴圈後的操作表示式 如果我們這樣寫乙個for迴圈 編譯沒有通...
不一樣又不一樣的 木板接水
空地上豎立著n個從左到右排列的木板,它們可以把水擋住,但溢位最邊上木板的水將會流到空地上。已知木板間距都是單位1,現給定每個木板的高度,請求出總共能接住的水量?說明一點,這裡只考慮間距 寬度 和高度,不考慮第三個維度,因此水量是平方單位。木板高度分別是2,1,3,那麼我們可以接住2 2 4平方單位的...
我們不一樣
前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...