c语言队列的链式存储数据打印具体代码
时间: 2023-06-04 11:06:15 浏览: 52
以下是使用链式存储方式实现队列的C语言代码示例,包括数据的入队、出队和打印操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列节点结构体
typedef struct node {
int data;
struct node* next;
} Node;
// 定义队列结构体
typedef struct queue {
Node* front;
Node* rear;
} Queue;
// 初始化队列
void initQueue(Queue* q) {
q->front = q->rear = NULL;
}
// 判断队列是否为空
int isQueueEmpty(Queue q) {
return q.front == NULL;
}
// 队列入队
void enqueue(Queue* q, int value) {
Node* node = (Node*)malloc(sizeof(Node));
node->data = value;
node->next = NULL;
if (isQueueEmpty(*q)) {
q->front = q->rear = node;
} else {
q->rear->next = node;
q->rear = node;
}
}
// 队列出队
int dequeue(Queue* q) {
if (isQueueEmpty(*q)) {
printf("队列为空,无法出队!\n");
return -1;
} else {
int value = q->front->data;
Node* tmp = q->front;
q->front = q->front->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(tmp);
return value;
}
}
// 遍历打印队列
void printQueue(Queue q) {
if (isQueueEmpty(q)) {
printf("队列为空,无法打印!\n");
} else {
printf("队列打印结果:\n");
Node* p = q.front;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(q);
dequeue(&q);
printQueue(q);
enqueue(&q, 4);
printQueue(q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
printQueue(q);
return 0;
}
```
以上代码实现了基本的队列操作,输出结果如下:
```
队列打印结果:
1 2 3
队列打印结果:
2 3
队列打印结果:
2 3 4
队列为空,无法出队!
队列为空,无法打印!
```