原题链接:[编程入门]链表之节点删除
解题思路:
看代码注释
注意事项:
看代码注释
参考代码:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复