C语言实现链表操作:创建、删除、插入与打印

3星 · 超过75%的资源 需积分: 9 10 下载量 54 浏览量 更新于2024-09-20 收藏 3KB TXT 举报
"该资源是一个C语言编写的链表操作程序,包括链表的创建、插入、删除和打印功能。这个程序是基于谭浩强的编程教程中的经典示例,旨在帮助初学者理解链表数据结构的基本操作。" 在这个程序中,链表的数据结构通过`struct student`定义,每个节点包含一个整型变量`num`表示学号,一个浮点型变量`score`表示分数,以及一个指向下一个节点的指针`next`。程序的核心功能由以下几个函数实现: 1. `creat(void)`: 这个函数用于创建链表。它会提示用户输入一系列的学生数据(学号和分数),然后根据这些输入构建链表。创建链表的过程是动态分配内存并连接节点。 2. `del(struct student* head, int del_num)`: 这个函数实现了链表的删除操作。它接受链表头指针`head`和要删除的学号`del_num`作为参数。函数遍历链表,找到对应学号的节点并将其从链表中移除。如果找到的学号不存在,链表保持不变。 3. `insert(struct student* head, struct student* stu)`: 这个函数用于在链表中插入新节点。它接受链表头指针`head`和待插入的新节点`stu`。新节点在链表中的插入位置由用户输入的学号决定,如果输入的学号与链表中某个节点的学号相等,则在该节点后插入新节点。 4. `print(struct student* head)`: 这个函数用于打印链表的所有节点,展示链表当前的状态。它接受链表头指针`head`,遍历链表并依次输出每个节点的学号和分数。 程序的主函数`main()`首先调用`creat()`创建链表,然后调用`print()`显示初始链表。接着,程序进入一个循环,允许用户输入要删除的学号,调用`del()`函数删除相应节点,并再次显示链表。当用户输入的删除学号为0时,退出删除操作。然后,程序提供插入功能,让用户输入新节点的信息,调用`insert()`插入节点,并再次打印链表。这个过程会持续到用户停止输入新节点。 通过这个程序,学习者可以深入理解链表数据结构的动态操作,包括如何动态分配内存创建节点,如何遍历链表查找和修改节点,以及如何释放不再需要的内存。这些都是C语言中处理链表所必需的关键技能。