#include <stdio.h>
#include <stdlib.h>
// 定义结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
perror("内存分配失败");
return NULL;
}
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 释放链表内存
void freeList(Node* head) {
Node* current = head;
Node* nextNode;
while (current != NULL) {
nextNode = current->next;
free(current);
current = nextNode;
}
}
int main() {
// 创建链表
Node* head = createNode(10);
Node* second = createNode(20);
Node* third = createNode(30);
// 连接节点
head->next = second;
second->next = third;
// 释放链表内存
freeList(head);
return 0;
}
- 结构体定义:
- 定义了一个名为
Node
的结构体,包含一个整型成员data
和一个指向下一个Node
结构体的指针next
。
- 创建节点函数
createNode
:
- 使用
malloc
动态分配内存来创建新的节点。
- 检查内存分配是否成功,如果失败,使用
perror
输出错误信息并返回NULL
。
- 初始化新节点的数据成员
data
,并将next
指针初始化为NULL
。
- 释放链表内存函数
freeList
:
- 通过遍历链表,逐个释放每个节点的内存,从而避免内存泄漏。
main
函数:
- 创建几个节点,并连接成链表。
- 最后调用
freeList
函数释放链表占用的内存。