早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求已有a,b两个链表,每个链表中的结点包括号学号、成绩。要求把两个链表合并,按学号升序排列的流程图

题目详情
求已有a,b两个链表,每个链表中的结点包括号学号、成绩。要求把两个链表合并,按学号升序排列的流程图
▼优质解答
答案和解析
struct student* sx(struct student * head)
{ // 用递归,每次找出原链表中学号最小的元素,插入到新链表的后面。
struct student *cursor, *first, *prev, *min;
first = NULL;

if (head == NULL)
return NULL;

for (cursor = min = head; cursor->next != NULL; cursor = cursor->next)
{
if (cursor->next->num < min->num)
{
prev = cursor;
min = cursor->next;
}
}

first = min;

if (min == head)
head = head->next;
else
prev->next = min->next;

first->next = sx(head);

return first;
}