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