写一个函数insert,用来向一个动态链表中插入结点。已知结点类型定义如下: struct student { long num; float score; struct student*next; };
时间: 2023-05-03 22:02:02 浏览: 122
题目要求编写一个insert函数,用来向一个动态链表中插入节点。已知节点类别已定义如下:
struct student {
long num;
float score;
struct student *next;
};
一个可能的实现如下:
void insert(struct student **head, struct student *newNode) {
struct student *p = *head;
if (*head == NULL) {
*head = newNode;
newNode->next = NULL;
return;
}
if (newNode->num < (*head)->num) {
newNode->next = *head;
*head = newNode;
return;
}
while (p->next != NULL) {
if (newNode->num < p->next->num) {
newNode->next = p->next;
p->next = newNode;
return;
}
p = p->next;
}
p->next = newNode;
newNode->next = NULL;
}
这个函数的作用是,在一个指向链表头节点的指针head和一个新的节点newNode已经被定义的情况下,将newNode插入动态链表中。如果链表为空,则把newNode作为第一个节点;否则,按照节点的num从小到大的顺序,找到应该插入newNode的位置,插入后更新指针。
阅读全文