用單向鏈表查看交集和差集
阿新 • • 發佈:2018-09-28
gets fir return urn 節點 integer java get array 寫了小的幫助類,留作紀念
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); }
}
用單向鏈表查看交集和差集