原题链接:[编程入门]链表之节点删除
解题思路:
看代码注释
注意事项:
看代码注释
参考代码:
import java.util.Scanner;
public class C1771 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
//处理输入
int n = sc.nextInt(), m = sc.nextInt();
Node headA = new Node();
Node p = headA;
for(int i = 0; i < n; i++){
p.next = new Node(sc.nextInt(), sc.nextInt(), p.next);
p = p.next;
}
Node headB = new Node();
p = headB;
for(int i = 0; i < m; i++){
p.next = new Node(sc.nextInt(), sc.nextInt(), p.next);
p = p.next;
}
//逻辑处理后打印输出
int k = F(headA, headB, n);
System.out.println(k);
p = headA;
while(p.next != null){
System.out.printf("%d %d\n", p.next.sno, p.next.score);
p = p.next;
}
}
sc.close();
}
//删除链表A中与链表B节点的学号数据相同的节点, 返回剩余节点数
private static int F(Node headA, Node headB, int n){
int k = n;
Node pb = headB;
while(pb.next != null){
int sno = pb.next.sno;
Node pa = headA;
while(pa.next != null){
if(pa.next.sno == sno){
pa.next = pa.next.next;
k--;
}else{
pa = pa.next;
}
}
pb = pb.next;
}
return k;
}
//链表节点类
private static class Node{
private int sno;
private int score;
private Node next;
public Node(){
this(0, 0, null);
}
public Node(int sno, int score, Node next){
this.sno = sno;
this.score = score;
this.next = next;
}
}
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复