阅读量:1
在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 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; }
以上是两种常见的实现队列的方法,在这两种方法中,通过维护一个计数器变量,可以方便地获得队列的长度。