用c语言完成初始化对列,入队,出队和遍历队列的函数
时间: 2024-09-25 16:11:52 浏览: 39
在 C 语言中,可以使用数组或链表来实现队列的数据结构。这里我们以单向链表为例,因为链表操作更灵活,适合插入和删除元素。
首先,我们需要定义一个队列节点结构:
```c
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一個節點的指针
} QueueNode;
```
然后,我们可以编写四个基本操作的函数:
1. 初始化队列(enqueue_init):
```c
QueueNode* enqueue_init() {
QueueNode* queue = (QueueNode*)malloc(sizeof(QueueNode));
if (queue == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
queue->next = NULL;
return queue;
}
```
2. 入队(enqueue):
```c
void enqueue(QueueNode** head, int value) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
3. 出队(dequeue):
```c
int dequeue(QueueNode** head) {
if (*head == NULL) {
printf("Queue is empty.\n");
return -1;
}
int removedValue = (*head)->data;
QueueNode* temp = *head;
*head = (*head)->next;
free(temp);
return removedValue;
}
```
4. 遍历队列(display_queue):
```c
void display_queue(QueueNode* head) {
QueueNode* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
阅读全文