解题思路:
思路:并没有创建三个链表,而是只通过一个链表对数据排序再加入
输出时是临时变量的下一个,避免把头指针输出
在对数据排序加入时找的temp是位于添加位置的前一个节点,否则插入不了
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
LinkedList01 linkedList01=new LinkedList01();
for (int i=1;i<=n;i++){
int date01=scanner.nextInt();
int date02=scanner.nextInt();
Information information01=new Information(date01,date02);
linkedList01.add_01(information01);
}
//向下一个链表添加数据
for (int i=1;i<=m;i++){
int date01=scanner.nextInt();
int date02=scanner.nextInt();
Information information01=new Information(date01,date02);
linkedList01.add_01(information01);
}
linkedList01.list_01();
}
}
//链表1
class LinkedList01{
Information head=new Information(-1,-1);
//添加节点
public void add_01(Information information){
Information temp=head;
while (true){
//添加前先判断是否满
if (temp.next==null){
break;
}
if (temp.next.no>information.no){
break;
}
temp=temp.next;
}
//进行数据添加
information.next=temp.next;
temp.next=information;
}
public void list_01(){
Information temp=head;
while (true){
if (temp.next==null){
break;
}
System.out.println(temp.next);
temp=temp.next;
}
}
}
/*
//链表2
class LinkedList02{
Information head=new Information(-1,-1);
public void add_02(Information information){
Information temp=head;
while (true){
//添加前先判断是否满
if (temp.next==null){
break;
}
temp=temp.next;
}
//进行数据添加
temp.next=information;
}
}
*/
class Information{
public int no;
public int score;
public Information next;
public Information(int no, int score) {
this.no = no;
this.score = score;
}
@Override
public String toString() {
return no+" "+score ;
}
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复