用C语言写程序,输入若干正整数,按从小到大次序建立1个带头结点单链表
时间: 2024-10-21 07:03:35 浏览: 47
在C语言中,我们可以使用结构体来定义链表节点,并通过循环读取输入的正整数,逐个插入到链表中。以下是创建这样一个单链表的基本步骤:
1. 首先,定义一个结构体 `Node` 表示链表节点:
```c
struct Node {
int data;
struct Node* next;
};
```
2. 然后,创建一个函数 `createNode` 来创建新的节点:
```c
Node* createNode(int value) {
Node* newNode = malloc(sizeof(Node)); // 分配内存
if (newNode) {
newNode->data = value;
newNode->next = NULL; // 初始化下一个节点为NULL
}
return newNode;
}
```
3. 接着,创建主函数 `main` 中,初始化链表头节点为 `head` 为 `NULL`,并读取输入的正整数:
```c
int main() {
Node* head = NULL;
int input;
// 循环读取输入直到输入结束(例如使用EOF)
while (scanf("%d", &input) == 1 && input > 0) {
Node* newNode = createNode(input);
// 如果链表为空或者当前节点为空,直接连接新节点作为头节点
if (head == NULL) {
head = newNode;
} else {
// 如果链表已有节点,找到最后一个节点并连接新节点
Node* lastNode = head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
// ... 其他处理及输出部分 ...
return 0;
}
```
4. 最后,在循环结束后,你需要根据需求对链表进行进一步的操作,如遍历链表并打印节点数据等。这里没有提供完整的输出部分,因为那取决于你想要的具体格式。
在上述代码中,我们假设用户输入结束后会有EOF(End Of File),这通常是键盘输入结束的标准。如果你希望在其他地方结束输入,可以考虑添加额外的条件判断。
阅读全文