用单向链表查看交集和差集
2018-09-28 12:59
141 查看
写了小的帮助类,留作纪念
import java.util.ArrayList;
import java.util.List;
// 链表的节点
class Node {
public int data; public Node next; public Node(int data){ this.data = data; } public int getData() { return data; }
}
public class TestNode {
// 头结点 public Node head=new Node(-999); // 头部插入节点 public void insertFirst(Node node) { Node temp = head; while(temp.next != null){ temp = temp.next; } temp.next = node; } // 打印列表 public void print(){ Node temp = head.next; while(temp != null){ System.out.print(temp.data+","); temp = temp.next; } System.out.println(); } //找出差集 public static List<Integer> getSub(TestNode a, TestNode b){ Node n1=a.head.next; Node n2=b.head.next; List<Integer> res=new ArrayList<Integer>(); while(n1!=null && n2!=null){ if(n1.data==n2.data){ n1=n1.next; n2=n2.next; }else if(n1.data<n2.data){ res.add(n1.data); n1=n1.next; }else{ while(n2.data<n1.data){ if(n2.next!=null){ n2=n2.next; }else{ n2=null; break; } } } } if(n1!=null){ res.add(n1.data); while(n1.next!=null){ res.add(n1.next.data); n1 = n1.next; } } System.out.println(JSON.toJSONString(res)); return res; } //找出交集 public static List<Integer> getSame(TestNode a, TestNode b){ Node n1=a.head.next; Node n2=b.head.next; List<Integer> res=new ArrayList<Integer>(); while(n1!=null && n2!=null){ if(n1.data==n2.data){ res.add(n1.data); n1=n1.next; n2=n2.next; }else if(n1.data<n2.data){ n1=n1.next; }else{ while(n2.data<n1.data){ if(n2.next!=null){ n2=n2.next; }else{ n2=null; break; } } } } System.out.println(JSON.toJSONString(res)); return res; } public static void main(String[] args) { TestNode node = new TestNode(); node.insertFirst(new Node(1)); node.insertFirst(new Node(3)); node.insertFirst(new Node(7)); node.insertFirst(new Node(9)); node.insertFirst(new Node(11)); TestNode node2 = new TestNode(); node2.insertFirst(new Node(1)); node2.insertFirst(new Node(9)); node2.insertFirst(new Node(8)); getSame(node, node2); }
}
相关文章推荐
- (1.2.1.2)单链表:有序链表合并、交集、差集
- 单向循环链表实现约瑟夫环 --------------点击图片即可查看清楚
- 【计导作业】链表——差集与交集
- 迅雷2014校招笔试编程题——求解两个集合差集,集合是以单向链表存储
- 求两个有序链表的交集和差集
- 求解两个集合的差集,集合是以单向链表存储
- 两个升序单向链表的合并
- 单向链表->单向循环链表
- C语言单向链表的建立
- 【数据结构】单向链表
- 差集A-B(链表)
- 单向链表的倒置
- 单向链表逆转
- 数据结构之链表面试题汇总(四)得到两个单链表相交的第一个交点、用O(1)的时间效率删除单向链表中的指定节点
- 单向链表
- Java 之 模拟单向链表和双向链表的实现
- 第7题 微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交,并找出第一个相交结点。
- Java实现单向链表的增删改查
- 数据结构(单向链表)
- 第六十二题(求两个单向链表的第一个公共节点)