教材管理系统链表初始化C语言
时间: 2023-09-04 10:10:54 浏览: 91
链表的初始化需要做两件事情:分配头结点和将头结点的指针域指向 NULL。
下面是一个简单的链表初始化的 C 代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
/* 链表节点结构体 */
struct Node {
int data; // 数据域
struct Node *next; // 指针域
};
/* 初始化链表 */
void initList(struct Node **head) {
// 分配头结点
*head = (struct Node *)malloc(sizeof(struct Node));
if (*head == NULL) {
printf("内存分配失败!\n");
exit(1);
}
// 将头结点的指针域指向 NULL
(*head)->next = NULL;
}
int main() {
struct Node *head; // 头结点指针
initList(&head); // 初始化链表
return 0;
}
```
在这个示例中,我们定义了一个 `Node` 结构体,包含数据域和指针域。链表的头结点是一个特殊的节点,它不存储数据,只用于指向链表的第一个节点。因此,在初始化链表时,我们需要先分配头结点,然后将头结点的指针域指向 NULL。
在 `initList` 函数中,我们通过传递头结点指针的指针来实现对头结点的修改。这是因为在 C 语言中,函数参数传递是值传递,如果我们只传递头结点指针,那么在函数内部修改头结点指针是无效的。因此,我们需要通过传递指向头结点指针的指针来实现对头结点的修改。
在 `main` 函数中,我们声明了头结点指针 `head`,然后调用 `initList` 函数来初始化链表。
阅读全文