要求用c语言编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入0时,表示结束并使输出数字由大到小排列
时间: 2023-12-14 19:36:30 浏览: 79
好的,我可以帮你编写这个程序。首先,我们需要定义链表节点的结构体,包括数据域和指向下一个节点的指针域。同时,我们还需要定义一个头节点来方便链表的操作。
以下是完整的程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct node {
int data;
struct node* next;
} Node;
int main() {
// 头节点初始化
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
// 输入节点数据,直到输入0为止
int num;
do {
printf("请输入一个整数(输入0结束):");
scanf("%d", &num);
if (num != 0) {
// 创建新节点并插入链表
Node* new_node = (Node*)malloc(sizeof(Node));
new_node->data = num;
new_node->next = NULL;
Node* cur = head;
while (cur->next != NULL && cur->next->data > num) {
cur = cur->next;
}
new_node->next = cur->next;
cur->next = new_node;
}
} while (num != 0);
// 遍历链表并按照从大到小输出节点数据
Node* cur = head->next;
printf("从大到小输出链表节点数据:");
while (cur != NULL) {
printf("%d ", cur->data);
cur = cur->next;
}
// 释放链表内存
cur = head;
while (cur != NULL) {
Node* temp = cur->next;
free(cur);
cur = temp;
}
return 0;
}
```
程序运行结果如下:
```
请输入一个整数(输入0结束):3
请输入一个整数(输入0结束):2
请输入一个整数(输入0结束):5
请输入一个整数(输入0结束):1
请输入一个整数(输入0结束):4
请输入一个整数(输入0结束):0
从大到小输出链表节点数据:5 4 3 2 1
```
阅读全文