溫馨提示×

linux隊列怎么創建呢

小樊
96
2024-12-27 13:17:32
欄目: 智能運維

在Linux中,隊列通常是通過數據結構(如鏈表、數組等)來實現的

  1. 定義隊列結構體:
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* next;
} Node;

typedef struct Queue {
    Node* front;
    Node* rear;
    int size;
} Queue;
  1. 初始化隊列:
Queue* createQueue(int capacity) {
    Queue* queue = (Queue*)malloc(sizeof(Queue));
    queue->front = NULL;
    queue->rear = NULL;
    queue->size = capacity;
    return queue;
}
  1. 判斷隊列是否為空:
int isEmpty(Queue* queue) {
    return (queue->front == NULL);
}
  1. 入隊操作:
void enqueue(Queue* queue, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;

    if (isEmpty(queue)) {
        queue->front = newNode;
        queue->rear = newNode;
    } else {
        queue->rear->next = newNode;
        queue->rear = newNode;
    }
    queue->size++;
}
  1. 出隊操作:
int dequeue(Queue* queue) {
    if (isEmpty(queue)) {
        printf("Queue is empty.\n");
        return -1;
    }

    Node* temp = queue->front;
    int data = temp->data;
    queue->front = temp->next;
    if (queue->front == NULL) {
        queue->rear = NULL;
    }
    free(temp);
    queue->size--;
    return data;
}
  1. 打印隊列:
void printQueue(Queue* queue) {
    Node* temp = queue->front;
    while (temp != NULL) {
        printf("%d -> ", temp->data);
        temp = temp->next;
    }
    printf("NULL\n");
}
  1. 主函數:
int main() {
    Queue* queue = createQueue(5);
    enqueue(queue, 10);
    enqueue(queue, 20);
    enqueue(queue, 30);
    printQueue(queue);

    dequeue(queue);
    printQueue(queue);

    return 0;
}

這個示例展示了如何在C語言中創建一個簡單的隊列,并進行入隊、出隊和打印操作。你可以根據自己的需求對這個示例進行修改和擴展。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女