在C语言编程中,动态链表是一种常用的数据结构,它允许程序员在运行时动态地添加或删除元素。本篇文章将详细介绍如何编写一个名为insert的函数,该函数能够向已存在的动态链表中插入一个新的节点。
【C源程序示例】
#include
#include
// 定义学生信息结构体
struct Student {
long number;
float grade;
struct Student *next;
};
// 插入函数
struct Student *insertNode(struct Student *listHead, struct Student *newStudent) {
struct Student *current = listHead;
struct Student *previous = NULL;
// 如果链表为空,则新节点成为头节点
if (listHead == NULL) {
newStudent->next = NULL;
return newStudent;
}
// 查找插入位置
while (current != NULL && newStudent->number > current->number) {
previous = current;
current = current->next;
}
// 插入到链表头部
if (previous == NULL) {
newStudent->next = listHead;
return newStudent;
}
// 插入到链表中间或末尾
newStudent->next = current;
previous->next = newStudent;
return listHead;
}
上述代码首先定义了一个Student
结构体,用于存储学生的学号和成绩,并且包含一个指向下一个节点的指针。接着定义了一个insertNode
函数,该函数接收两个参数:一个是链表的头节点listHead
,另一个是要插入的新节点newStudent
。函数内部首先检查链表是否为空,如果为空则直接将新节点设为头节点;如果不为空,则遍历链表找到合适的插入位置,并进行插入操作。最后返回更新后的链表头节点。