1. 队列概述队列是一种先进先出(FIFO)的数据结构,它允许元素从一端插入(入队)和从另一端删除(出队)。队列在许多程序中都有应用,如任务调度、打印队列等。2. 队列的C语言实现队列可以使用数组或链...
队列是一种先进先出(FIFO)的数据结构,它允许元素从一端插入(入队)和从另一端删除(出队)。队列在许多程序中都有应用,如任务调度、打印队列等。
队列可以使用数组或链表来实现。在这里,我们将使用链表来实现队列,因为链表可以动态地分配内存,并且不会受到固定大小的限制。
#include
#include
typedef struct QueueNode { int data; struct QueueNode* next;
} QueueNode;
typedef struct Queue { QueueNode* front; QueueNode* rear;
} Queue; void QueueInit(Queue* q) { q->front = NULL; q->rear = NULL;
}void QueueEnqueue(Queue* q, int value) { QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode)); newNode->data = value; newNode->next = NULL; if (q->rear == NULL) { q->front = newNode; q->rear = newNode; } else { q->rear->next = newNode; q->rear = newNode; }
}int QueueDequeue(Queue* q) { if (q->front == NULL) { printf("Queue is empty.\n"); return -1; } QueueNode* temp = q->front; int value = temp->data; q->front = q->front->next; if (q->front == NULL) { q->rear = NULL; } free(temp); return value;
}void QueueDestroy(Queue* q) { while (q->front != NULL) { QueueNode* temp = q->front; q->front = q->front->next; free(temp); } q->rear = NULL;
}以下是一个完整的代码示例,展示了如何使用上述函数:
#include
#include
// ...(此处省略队列结构定义和函数声明)
int main() { Queue q; QueueInit(&q); // 入队操作 QueueEnqueue(&q, 1); QueueEnqueue(&q, 2); QueueEnqueue(&q, 3); // 出队操作 while (q.front != NULL) { int value = QueueDequeue(&q); printf("Dequeued: %d\n", value); } // 销毁队列 QueueDestroy(&q); return 0;
} 在本文中,我们详细介绍了C语言中队列的基本操作,包括入队、出队和销毁。通过使用链表来实现队列,我们可以有效地管理动态数据,并在需要时对其进行扩展。