用C语言实现:【问题描述】 练习链队的基本操作,包括初始化队列,入队,出队和遍历队列等 【输入形式】 第一行输入入队的元素,以逗号隔开 【输出形式】 第一行输出:出队列的元素 第二行输出:当前队列的元素(遍历) 【样例输入】 10 20 30 【样例输出】 出队列的元素是:10 当前队列的数据元素为 20 30
时间: 2023-12-01 19:04:13 浏览: 75
链队列的各种基本操作
5星 · 资源好评率100%
好的,下面是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;
}
void enQueue(Queue *q, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
int deQueue(Queue *q) {
if (q->front == NULL) {
printf("Queue is empty!\n");
return -1;
}
int data = q->front->data;
Node *temp = q->front;
q->front = q->front->next;
free(temp);
if (q->front == NULL) {
q->rear = NULL;
}
return data;
}
void traverseQueue(Queue q) {
Node *temp = q.front;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
char c;
int data;
while (scanf("%d", &data) == 1) {
enQueue(&q, data);
c = getchar();
if (c == '\n') {
break;
}
}
printf("出队列的元素是:%d\n", deQueue(&q));
printf("当前队列的数据元素为:");
traverseQueue(q);
return 0;
}
```
输入样例:
```
10 20 30
```
输出样例:
```
出队列的元素是:10
当前队列的数据元素为:20 30
```
阅读全文