C语言编程【问题描述】 练习链队的基本操作,包括初始化队列,入队,出队和遍历队列等 【输入形式】 第一行输入入队的元素,以逗号隔开 【输出形式】 第一行输出:出队列的元素 第二行输出:当前队列的元素(遍历) 【样例输入】 10 20 30 【样例输出】 出队列的元素是:10 当前队列的数据元素为 20 30
时间: 2023-11-29 19:07:16 浏览: 53
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
typedef struct {
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("队列为空!\n");
return -1;
} else {
Node *p = q->front;
int data = p->data;
q->front = p->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(p);
return data;
}
}
void traverse(Queue *q)
{
Node *p = q->front;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
Queue q;
int data;
initQueue(&q);
// 入队
scanf("%d", &data);
while (data != -1) {
enqueue(&q, data);
scanf("%d", &data);
}
// 出队
printf("出队列的元素是:%d\n", dequeue(&q));
// 遍历队列
printf("当前队列的数据元素为 ");
traverse(&q);
return 0;
}
```
算法思路:
1. 定义链队的结构体,包括节点的数据域和指针域。
2. 定义队列的结构体,包括队头指针和队尾指针。
3. 定义初始化队列、入队、出队和遍历队列的函数。
4. 在主函数中,首先初始化队列,然后通过循环输入入队的元素,以-1结尾。
5. 调用出队函数输出队头元素,调用遍历队列函数输出队列中的所有元素。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)