1. 程式人生 > >用單向鏈表查看交集和差集

用單向鏈表查看交集和差集

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);

}

}

用單向鏈表查看交集和差集