亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c語言隊列實現代碼怎么寫

小億
80
2023-11-04 11:32:38
欄目: 編程語言

要在 C 語言中實現一個隊列,可以使用數組或鏈表來存儲元素,并使用相應的操作來實現隊列的基本功能。下面是一個使用數組實現隊列的示例代碼:

#include 
#define MAX_SIZE 100
typedef struct {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;
void initQueue(Queue* q) {
    q->front = -1;
    q->rear = -1;
}
int isEmpty(Queue* q) {
    return (q->front == -1 && q->rear == -1);
}
int isFull(Queue* q) {
    return (q->rear == MAX_SIZE - 1);
}
void enqueue(Queue* q, int value) {
    if (isFull(q)) {
        printf("Error: Queue is full\n");
        return;
    }
    if (isEmpty(q)) {
        q->front = 0;
    }
    q->rear++;
    q->data[q->rear] = value;
}
int dequeue(Queue* q) {
    if (isEmpty(q)) {
        printf("Error: Queue is empty\n");
        return -1;
    }
    int value = q->data[q->front];
    if (q->front == q->rear) {
        // If there is only one element in the queue
        q->front = -1;
        q->rear = -1;
    } else {
        q->front++;
    }
    return value;
}
int main() {
    Queue q;
    initQueue(&q);
    enqueue(&q, 10);
    enqueue(&q, 20);
    enqueue(&q, 30);
    printf("Dequeued: %d\n", dequeue(&q));
    printf("Dequeued: %d\n", dequeue(&q));
    printf("Dequeued: %d\n", dequeue(&q));
    return 0;
}

在上述代碼中,我們定義了一個 `Queue` 結構體來表示隊列,其中包含一個大小為 `MAX_SIZE` 的整型數組用于存儲元素,以及 `front` 和 `rear` 兩個指針分別指向隊列的頭和尾。

`initQueue()` 函數用于初始化隊列,將 `front` 和 `rear` 置為 -1 表示隊列為空。

`isEmpty()` 函數檢查隊列是否為空,如果 `front` 和 `rear` 都是 -1,則表明隊列為空。

`isFull()` 函數檢查隊列是否已滿,如果 `rear` 等于 `MAX_SIZE - 1`,則表示隊列已滿。

`enqueue()` 函數用于入隊操作,向隊列尾部添加元素。首先檢查隊列是否已滿,如果已滿則輸出錯誤信息。如果隊列為空,將 `front` 設置為 0。然后將 `rear` 增加 1,并將新的元素存儲在隊列的尾部。

`dequeue()` 函數用于出隊操作,從隊列頭部取出元素并返回。首先檢查隊列是否為空,如果為空則輸出錯誤信息。如果隊列只有一個元素,將 `front` 和 `rear` 都設置為 -1。否則,將 `front` 增加 1,并返回隊列頭部的元素。

以上代碼輸出結果為:

Dequeued: 10
Dequeued: 20
Dequeued: 30

這樣就完成了使用數組實現的隊列操作。如果想要使用鏈表實現隊列,可以使用類似的思路,只是節點的定義和操作會有所不同。

0
象山县| 彰化市| 临沂市| 义马市| 崇义县| 沙湾县| 兰考县| 水城县| 沙河市| 进贤县| 太白县| 拜城县| 宣武区| 澜沧| 东宁县| 界首市| 甘谷县| SHOW| 旅游| 昌宁县| 苍梧县| 西林县| 石棉县| 洪湖市| 锡林郭勒盟| 樟树市| 永济市| 永登县| 麦盖提县| 长顺县| 新建县| 明星| 潼南县| 抚远县| 龙门县| 九台市| 长沙市| 吉木乃县| 黑河市| 扶沟县| 遵义市|