C语言实现用户输入数据的链表
时间: 2023-08-15 13:27:14 浏览: 120
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
好的,下面是一个简单的 C 语言实现用户输入数据的链表代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点的定义
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 添加节点的操作
void addNode(ListNode** head, int val) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = val;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
ListNode* cur = *head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
}
}
int main() {
ListNode* head = NULL;
int val;
// 循环读入用户输入的数据,直到输入 -1 为止
while (1) {
printf("请输入一个整数(输入 -1 结束):");
scanf("%d", &val);
if (val == -1) {
break;
}
addNode(&head, val);
}
// 遍历链表并输出每个节点的值
ListNode* cur = head;
printf("链表内容为:");
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
// 释放链表节点的内存
cur = head;
while (cur != NULL) {
ListNode* tmp = cur;
cur = cur->next;
free(tmp);
}
return 0;
}
```
在该代码中,我们首先定义了一个 `ListNode` 结构体表示链表节点,其中 `val` 表示节点的值,`next` 表示下一个节点的指针。然后我们定义了一个 `addNode` 函数,用于向链表中添加节点。该函数使用了双重指针 `head`,用于表示链表的头节点,如果链表为空,则新节点为头节点;否则遍历链表找到最后一个节点,将其 `next` 指向新节点。
在 `main` 函数中,我们循环读入用户输入的数据,直到输入 -1 为止。每次读入一个整数后,就调用 `addNode` 函数将其添加到链表中。最后,我们遍历链表并输出每个节点的值,同时释放链表节点的内存,避免内存泄漏。
注意,在使用完链表后,一定要记得释放链表节点的内存,否则会造成内存泄漏。
阅读全文