用c语言编写程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入0时,表示结束(链表头结点的data域不放数据,表空条件是next==NULL)。
时间: 2024-02-22 20:58:21 浏览: 58
好的,我可以帮你解决这个问题。
以下是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表结点的结构体
struct ListNode {
int data;
struct ListNode* next;
};
int main() {
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode)); // 创建头结点
head->next = NULL; // 初始化链表为空
int num;
printf("请输入链表结点的数据,以0结束:\n");
scanf("%d", &num);
while (num != 0) {
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode)); // 创建新结点
newNode->data = num;
newNode->next = NULL;
struct ListNode* p = head;
while (p->next != NULL) {
p = p->next; // 找到链表最后一个结点
}
p->next = newNode; // 将新结点插入链表尾部
scanf("%d", &num); // 继续输入下一个结点的数据
}
printf("链表中的数据为:");
struct ListNode* p = head->next; // 从第一个真正的结点开始遍历
while (p != NULL) {
printf("%d ", p->data); // 输出结点的数据
p = p->next;
}
printf("\n");
// 释放链表内存空间
while (head != NULL) {
struct ListNode* p = head;
head = head->next;
free(p);
}
return 0;
}
```
当你运行该程序时,它会要求你输入链表结点的数据,以0结束。然后,它会创建一个带有头结点的单向链表,最后输出链表中的所有数据。
希望这可以帮助到你!
阅读全文