C语言建立带表头节点的链表L,满足用户从键盘正序位输入数据元素
时间: 2024-09-29 17:13:16 浏览: 41
在C语言中,我们可以使用动态内存分配创建一个带头节点的链表,并允许用户按顺序输入数据元素。以下是基本的步骤:
1. **初始化链表**:首先,我们需要创建一个头节点`Node* head`,并为其成员(比如数据域`data`和指向下一个节点的指针`next`)赋空值。
```c
typedef struct Node {
int data; // 存储的数据
struct Node* next; // 指向下一个节点的指针
} Node;
Node* head = NULL; // 初始化头节点
```
2. **获取用户输入**:创建一个无限循环,提示用户输入数据,然后将其存储到新节点中。当用户输入'Q'表示结束时跳出循环。
```c
while (1) {
printf("请输入数据元素(输入'Q'退出):");
char input[50];
scanf("%s", input);
if (input[0] == 'Q') break; // 用户选择退出
Node* newNode = (Node*)malloc(sizeof(Node)); // 动态分配内存
newNode->data = atoi(input); // 转换输入字符串为整数
newNode->next = NULL;
// 将新节点添加到链表末尾
if (head == NULL) {
head = newNode;
} else {
Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
```
3. **释放内存**:最后,在程序结束前,记得释放不再使用的节点内存,防止内存泄漏。
```c
// 清理链表
Node* temp = head;
while (temp != NULL) {
Node* nextTemp = temp->next;
free(temp);
temp = nextTemp;
}
// 放回头节点为空
head = NULL;
```
阅读全文