【鏈表】無序鏈表中移除重複項

 1 import java.util.HashSet;
 2 import java.util.Set;
 3 
 4 public class Main {
 5 
 6     // 從無序鏈表中刪除重複項
 7     public Node removeDup(Node node) {
 8 
 9         if (node == null || node.next == null || node.next.next == null) {
10             return node;
11         }
12 
13         Set<Integer> set = new HashSet<Integer>();
14 
15         Node pre = node;
16         Node curr = node.next;
17 
18         while (curr != null) {
19             if (set.contains(curr.data)) {
20                 pre.next = curr.next;
21             } else {
22                 set.add(curr.data);
23                 pre = curr;
24             }
25 
26             curr = curr.next;
27         }
28 
29         return node;
30     }
31 
32     public Node createListNodes() {
33         Node node7 = new Node(7, null);
34         Node node6 = new Node(5, node7);
35         Node node5 = new Node(4, node6);
36         Node node4 = new Node(5, node5);
37         Node node3 = new Node(1, node4);
38         Node node2 = new Node(3, node3);
39         Node node1 = new Node(1, node2);
40         Node head = new Node(0, node1); // head pointer
41 
42         return head;
43     }
44 
45     public static void main(String[] args) {
46         Main main = new Main();
47         Node node = main.removeDup(main.createListNodes());
48 
49         if (node != null) {
50             node = node.next;
51             while (node != null) {
52                 System.out.println(node.data);
53                 node = node.next;
54             }
55         }
56     }
57 }
相關文章
相關標籤/搜索