/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */实例化
时间: 2025-08-08 16:01:15 浏览: 3
### 实例化单链表结构 `ListNode`
在 C 语言中,单链表通常由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域用于存储数据,指针域用于指向下一个节点。
#### 1. 定义 `ListNode` 结构体
在 C 语言中,可以使用 `struct` 来定义链表节点的结构体。以下是一个典型的 `ListNode` 结构体定义:
```c
typedef struct ListNode {
int val; // 数据域,存储整型数据
struct ListNode* next; // 指针域,指向下一个节点
} ListNode;
```
通过 `typedef`,可以简化结构体的声明,使得 `ListNode` 可以直接用于声明变量。
#### 2. 实例化一个 `ListNode` 节点
在 C 语言中,可以通过以下方式实例化一个 `ListNode` 节点:
```c
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
if (node == NULL) {
// 内存分配失败
printf("Memory allocation failed!\n");
return -1;
}
node->val = 10; // 设置数据域的值
node->next = NULL; // 初始化指针域为 NULL
```
上述代码使用 `malloc` 函数在堆上动态分配内存来创建一个 `ListNode` 节点,并初始化其数据域和指针域[^3]。
#### 3. 创建单链表
单链表的创建通常涉及多个节点的动态分配和连接。以下是一个简单的单链表创建示例:
```c
ListNode* createList(int size) {
ListNode* head = (ListNode*)malloc(sizeof(ListNode)); // 创建头节点
if (head == NULL) {
printf("Memory allocation failed!\n");
return NULL;
}
head->next = NULL; // 初始化头节点的指针域为 NULL
ListNode* current = head; // 当前节点指针
for (int i = 0; i < size; i++) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); // 创建新节点
if (newNode == NULL) {
printf("Memory allocation failed!\n");
return NULL;
}
newNode->val = i; // 设置数据域的值
newNode->next = NULL; // 初始化指针域为 NULL
current->next = newNode; // 将新节点连接到当前节点的指针域
current = newNode; // 更新当前节点指针
}
return head; // 返回头节点指针
}
```
该函数 `createList` 接收一个整型参数 `size`,表示链表的大小。函数返回一个指向头节点的指针,头节点的 `next` 指针指向链表的第一个实际节点[^3]。
#### 4. 打印单链表
为了验证单链表的创建是否成功,可以编写一个打印函数来输出链表中的所有节点值:
```c
void printList(ListNode* head) {
ListNode* current = head->next; // 从第一个实际节点开始打印
while (current != NULL) {
printf("%d ", current->val); // 打印当前节点的数据域
current = current->next; // 移动到下一个节点
}
printf("\n");
}
```
该函数 `printList` 接收一个指向头节点的指针 `head`,并从第一个实际节点开始遍历链表,打印每个节点的数据域。
阅读全文
相关推荐








