溫馨提示×

c語言中怎么獲得隊(duì)列長度

小億
113
2023-12-14 10:43:00
欄目: 編程語言

在C語言中,可以通過以下方法獲得隊(duì)列的長度:

  1. 使用鏈表表示隊(duì)列:創(chuàng)建一個計(jì)數(shù)器變量,每次入隊(duì)和出隊(duì)操作時,相應(yīng)地增加或減少計(jì)數(shù)器的值。隊(duì)列的長度即為計(jì)數(shù)器的值。

示例代碼:

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

typedef struct Queue {
    Node* front;
    Node* rear;
    int size;
} Queue;

// 初始化隊(duì)列
void initQueue(Queue* queue) {
    queue->front = NULL;
    queue->rear = NULL;
    queue->size = 0;
}

// 獲取隊(duì)列長度
int getQueueLength(Queue* queue) {
    return queue->size;
}

// 入隊(duì)操作
void enqueue(Queue* queue, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;

    if (queue->front == NULL) {
        queue->front = newNode;
        queue->rear = newNode;
    } else {
        queue->rear->next = newNode;
        queue->rear = newNode;
    }
    
    queue->size++;
}

// 出隊(duì)操作
int dequeue(Queue* queue) {
    if (queue->front == NULL) {
        printf("Queue is empty.\n");
        return -1;
    }

    Node* temp = queue->front;
    int data = temp->data;

    queue->front = queue->front->next;
    free(temp);

    queue->size--;

    return data;
}
  1. 使用數(shù)組表示隊(duì)列:創(chuàng)建一個計(jì)數(shù)器變量,每次入隊(duì)和出隊(duì)操作時,相應(yīng)地增加或減少計(jì)數(shù)器的值。隊(duì)列的長度即為計(jì)數(shù)器的值。

示例代碼:

#define MAX_SIZE 10

typedef struct Queue {
    int data[MAX_SIZE];
    int front;
    int rear;
    int size;
} Queue;

// 初始化隊(duì)列
void initQueue(Queue* queue) {
    queue->front = 0;
    queue->rear = 0;
    queue->size = 0;
}

// 獲取隊(duì)列長度
int getQueueLength(Queue* queue) {
    return queue->size;
}

// 入隊(duì)操作
void enqueue(Queue* queue, int data) {
    if (queue->size == MAX_SIZE) {
        printf("Queue is full.\n");
        return;
    }

    queue->data[queue->rear] = data;
    queue->rear = (queue->rear + 1) % MAX_SIZE;
    queue->size++;
}

// 出隊(duì)操作
int dequeue(Queue* queue) {
    if (queue->size == 0) {
        printf("Queue is empty.\n");
        return -1;
    }

    int data = queue->data[queue->front];
    queue->front = (queue->front + 1) % MAX_SIZE;
    queue->size--;

    return data;
}

以上是兩種常見的實(shí)現(xiàn)隊(duì)列的方法,在這兩種方法中,通過維護(hù)一個計(jì)數(shù)器變量,可以方便地獲得隊(duì)列的長度。

0