c语言中怎么获得队列长度

avatar
作者
猴君
阅读量:1

在C语言中,可以通过以下方法获得队列的长度:

  1. 使用链表表示队列:创建一个计数器变量,每次入队和出队操作时,相应地增加或减少计数器的值。队列的长度即为计数器的值。

示例代码:

typedef struct Node {     int data;     struct Node* next; } Node;  typedef struct Queue {     Node* front;     Node* rear;     int size; } Queue;  // 初始化队列 void initQueue(Queue* queue) {     queue->front = NULL;     queue->rear = NULL;     queue->size = 0; }  // 获取队列长度 int getQueueLength(Queue* queue) {     return queue->size; }  // 入队操作 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++; }  // 出队操作 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. 使用数组表示队列:创建一个计数器变量,每次入队和出队操作时,相应地增加或减少计数器的值。队列的长度即为计数器的值。

示例代码:

#define MAX_SIZE 10  typedef struct Queue {     int data[MAX_SIZE];     int front;     int rear;     int size; } Queue;  // 初始化队列 void initQueue(Queue* queue) {     queue->front = 0;     queue->rear = 0;     queue->size = 0; }  // 获取队列长度 int getQueueLength(Queue* queue) {     return queue->size; }  // 入队操作 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++; }  // 出队操作 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; } 

以上是两种常见的实现队列的方法,在这两种方法中,通过维护一个计数器变量,可以方便地获得队列的长度。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!