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

   2025-02-13 5740
核心提示:在C语言中,可以通过以下方法获得队列的长度:使用链表表示队列:创建一个计数器变量,每次入队和出队操作时,相应地增加或减少

在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;}

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

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言