使用C語言來解決迴圈佇列問題的方法

2022-09-27 07:12:06 字數 1759 閱讀 5878

題目描述:

程式設計客棧大家都知道資料結構裡面有乙個結構叫做迴圈佇列。顧名思義,這是乙個佇列,並且是迴圈的。但是現在,淘氣的囧哥給這個迴圈佇列加上了一些規矩,其中有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

ac**:

#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

} 本文標題: 使用c語言來解決迴圈佇列問題的方法

本文位址:

迴圈佇列 C語言

佇列的特點是先進先出。在佇列的儲存過程中,不僅使用了一組位址連續的儲存單元存放從佇列頭到佇列尾的元素,而且還附設了兩個指標front和rear,分別指示佇列頭元素及佇列尾元素的位置。佇列操作示意圖 出自嚴蔚敏版資料結構 對鍊錶的增加是通過移動rear指標,鍊錶的刪除時通過移動front的移動。通過這...

迴圈佇列的實現(C語言)

迴圈佇列 vs2010 除錯 include include include define max size 6 define true 1 define false 0 define overflow 0 define ok 1 define error 0 typedef struct seq ...

C語言迴圈佇列的實現

迴圈佇列的操作包括初始化 求佇列的長度 入隊 出隊 取隊頭元素。下面是實現 在初始化之前,先進行預定義 define ok 1 define error 0 define overflow 2 define maxsize 100 typedef int status typedef int ele...