在C语言中,可以通过以下方法获得队列的长度:
使用链表表示队列:创建一个计数器变量,每次入队和出队操作时,相应地增加或减少计数器的值。队列的长度即为计数器的值。示例代码:
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;}使用数组表示队列:创建一个计数器变量,每次入队和出队操作时,相应地增加或减少计数器的值。队列的长度即为计数器的值。示例代码:
#define MAX_SIZE 10typedef 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;}以上是两种常见的实现队列的方法,在这两种方法中,通过维护一个计数器变量,可以方便地获得队列的长度。

