不屬於真正的連結串列去重,未對原來的連結串列進行修改,而是另外建立了一個連結串列
阿新 • • 發佈:2018-11-03
來自:https://blog.csdn.net/futureflyme/article/details/72780789
package interview;
import java.util.*;
//定義節點結構 class Node { int data; Node next = null; Node(int data) { this.data = data; } } public class TestDuplicate { public static void main(String[] args) { int [] arr=new int[] {5,4,4,3,3,2,1}; //定義一個for迴圈,每次在連結串列頭部插入元素,從而建立一個連結串列 Node head1=null; for(int i=0;i<arr.length;i++){ Node node=new Node(arr[i]); node.next=head1; head1=node; } System.out.println("原來的連結串列: "); Node temp1=head1; while(temp1!=null){ System.out.print(temp1.data+" "); temp1=temp1.next; } System.out.println(); Node head2 = deleteDuplication(head1); System.out.println("去重後的連結串列: "); Node temp2=head2; while(temp2!=null){ System.out.print(temp2.data+" "); temp2=temp2.next; } } //這個方法不是真正的連結串列去重 public static Node deleteDuplication(Node phead) { HashSet<Integer> set = new HashSet<Integer>(); Node tempNode = phead; while (tempNode != null) { set.add(tempNode.data); tempNode = tempNode.next; } //for迴圈,每次在連結串列的尾部插入元素,從而建立一個連結串列 Node head=null; Node temp = head; for (Integer num : set) { Node node = new Node(num); if(head==null){ head=node; }else{ temp.next=node; } temp=node; } return head; } }