void sort(studentList *L) {
//两个节点都没有排个屁序
if (L->count < 2) {
printf("链表排序完成!\n");
display(L);
return;
}
//插入排序
studentNode *p, *pre, *tmp;
//p指向第二个学生节点
p = L->head->next;
//链表从头节点和第一个学生节点处断开
L->head->next = NULL;
//从第一个学生节点开始一直往后循环
while (p) {
//存好下一个节点的指针
tmp = p->next;
//找到插入位置
pre = L->head;
while (pre->next != NULL && pre->next->stu.average > p->stu.average)
pre = pre->next;
//更新尾指针
if (pre->next == NULL) {
L->tail = p;
}
//插入
p->next = pre->next;
pre->next = p;
//跳到下一个
p = tmp;
}
printf("链表排序完成!\n");
display(L);
}
我想问一下,L->head->next=NULL
p->next=pre->next
这两行代码是什么意思,头节点不是指向空吗,为什么用p指向的节点指向空呀,那整条链不是断了吗