已有a,b两个链表,每个链表中的结点包括学号、成绩,要求把两个链表合并,按学号升序排列。
时间: 2023-05-03 11:02:21 浏览: 242
链表合并并按学号排序
4星 · 用户满意度95%
题目描述:已有a、b两个链表,每个链表中的结点包括学号、成绩,要求把两个链表合并,按学号升序排列。
解题思路:步骤分为两个部分,第一部分为将两个链表合并,第二部分为按学号升序排列。
第一部分:
1. 创建一个新的链表,用于存放合并后的结点,命名为“c”。
2. 分别用两个指针指向链表a和链表b的头结点。
3. 比较两个指针所指向的结点的学号大小,把较小的结点插入到链表c的尾部,并把指向这个结点的指针向后移动一位。
4. 重复步骤3,直到某个链表已经全部遍历完毕。
5. 把另一个没有遍历完毕的链表剩下的结点依次插入到链表c的尾部。
第二部分:
1. 用一个指针指向链表c的头结点。
2. 从头结点开始遍历链表c,依次比较每个结点的学号和它的下一个结点的学号的大小。
3. 如果当前结点的学号比下一个结点的学号大,就把它和下一个结点交换位置,并重新从头结点开始遍历。
4. 重复步骤3,直到所有的结点都按学号升序排列完成。
最后返回链表c即为合并后的链表,按学号升序排列。
阅读全文