在C語言中,可以通過以下方法獲得隊(duì)列的長度:
示例代碼:
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;
}
示例代碼:
#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ì)列的長度。