用c语言写出链队列出队函数
时间: 2023-11-29 07:07:16 浏览: 59
好的,下面是用C语言实现链队列出队的函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 队列节点结构体
struct Node {
int data;
struct Node *next;
};
// 队列结构体,包含队头和队尾指针
struct Queue {
struct Node *head;
struct Node *tail;
};
// 初始化队列
void initQueue(struct Queue *q) {
q->head = NULL;
q->tail = NULL;
}
// 入队函数
void enqueue(struct Queue *q, int val) {
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = val;
newNode->next = NULL;
if (q->tail == NULL) {
q->head = newNode;
q->tail = newNode;
} else {
q->tail->next = newNode;
q->tail = newNode;
}
}
// 出队函数
int dequeue(struct Queue *q) {
if (q->head == NULL) {
printf("队列为空!\n");
return -1;
}
int res = q->head->data;
struct Node *temp = q->head;
q->head = q->head->next;
if (q->head == NULL) {
q->tail = NULL;
}
free(temp);
return res;
}
// 测试函数
int main() {
struct Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
return 0;
}
```
需要注意的是,在出队函数中,需要特别处理队列为空的情况,并释放出队节点的内存空间。
阅读全文