中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
德兴市| 邹城市| 葫芦岛市| 鄂托克前旗| 乐清市| 五常市| 丹阳市| 兰西县| 津南区| 湄潭县| 信宜市| 汝城县| 友谊县| 图木舒克市| 咸阳市| 吉林省| 饶平县| 特克斯县| 资兴市| 呼玛县| 石台县| 锦屏县| 北辰区| 五河县| 清新县| 浦县| 筠连县| 台湾省| 曲沃县| 闽清县| 沭阳县| 建宁县| 沛县| 额济纳旗| 山西省| 神池县| 都安| 防城港市| 双鸭山市| 东港市| 台湾省|