不一樣的迴圈佇列

2021-08-27 06:33:59 字數 1749 閱讀 6563

在九度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平方單位的...

我們不一樣

前輩們因自身實際的種種因素的影響而產生的認知,並不一定適用於我們自身。你可能從來不會去想乙個問題 你的觀點,來自 其實,它們絕大部分來自網路,它們或多或少地蠶食了你的判斷力。未來的路要怎麼走,沒有對與錯。有的,只是每乙個選擇所需要承擔的責任。我不想面臨,後之視今亦猶今之視昔的悲哀。我希望,未來回首,...