C语言实现带头节点链表操作:创建、打印与删除

需积分: 9 3 下载量 50 浏览量 更新于2024-11-29 收藏 3KB TXT 举报
本资源主要介绍了C语言中的链表数据结构,特别是涉及到了带头节点的单向链表操作。链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在提供的代码片段中,我们看到两个关键函数:`creat()` 和 `print()`,以及一个未完成的 `insert()` 函数。 1. 带头节点链表结构: `struct student` 定义了一个学生节点,其中包含一个整型变量 `num` 用于存储学生的学号,以及一个指向下一个节点的指针 `next`。`NULL` 定义为 0,用于表示链表的结束标记。 2. 创建链表(creat()函数): 这个函数负责初始化链表并添加元素。首先,它创建一个头节点 `head`,然后循环读取用户的输入,并动态分配内存创建新的节点 `p`。新节点的 `num` 属性被设置为用户输入的值,`next` 指针被设为 `NULL`,然后将其连接到当前链表的末尾。当用户输入 0 时,跳出循环,返回链表的头节点 `head`。 3. 打印链表(print()函数): `print()` 函数遍历链表,从头节点的下一个节点开始,打印出每个节点的 `num` 值。如果遍历到 `NULL`,则输出 "thelistisNULL!",表示链表为空。 4. 删除节点(del()函数): 删除函数让用户输入要删除的学生学号,通过遍历链表找到对应节点。如果找到该节点,就将前一个节点的 `next` 指针指向下一个节点,并释放已删除节点的内存;如果没有找到,则输出错误消息。 5. 插入节点(insert()函数的一部分): 提供的代码只展示了插入函数的开始部分,没有完全实现。在这个函数中,首先动态分配一个新的节点 `p`,用户需要输入要插入的新学号,然后将新节点插入到链表的适当位置。具体实现可能包括检查链表的头节点、遍历链表找到插入位置等步骤。 总结来说,这个资源提供了一个使用C语言实现的带头节点链表,包含了创建链表、遍历链表以及基本的删除和插入操作。对于学习和理解链表数据结构以及其在C语言中的应用,这部分代码是一个很好的示例。