解题思路:
思路:并没有创建三个链表,而是只通过一个链表对数据排序再加入
输出时是临时变量的下一个,避免把头指针输出
在对数据排序加入时找的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语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
最小公倍数 (C语言代码)浏览:1109 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:627 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:609 |
A+B for Input-Output Practice (I) (C语言代码)浏览:451 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:584 |
拯救雅典娜浏览:1381 |
简单的a+b (C语言代码)浏览:667 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:447 |