從連結串列中移除重複節點
java中有Hashtable函式,真的是方便到家沒話說····
因為java中沒有指標概念,所以只能通過物件來建立連結串列,建立連結串列程式碼如下
public class LinkedListNode {
/*
* 建立連結串列,含有data 和指向下一節點的link
*/
public int data;
public LinkedListNode link;
/*
* 定義頭結點,尾節點和建立新節點的空間
*/
LinkedListNode first,newNode,last;
int num;
public LinkedListNode buildList(int[] input){
if(input.length>0){
for(int i=0;i<input.length;i++){
newNode= new LinkedListNode();
newNode.data=input[i];
newNode.link=null;
if(first==null){
first=newNode;
last=newNode;
}else{
last.link=newNode;
last=newNode;
}
}
}
return first;
}
}
連結串列建立好後就可以通過雜湊表來刪除重複節點,
public class quchu {
static int[]input={12,35,12,78,15,78,1};
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedListNode list = new LinkedListNode();
list = list.buildList(input);
deleteDups(list);
while(list.link!=null){
System.out.println("list info is "+list.data);
list=list.link;
}
}
public static void deleteDups(LinkedListNode n){
Hashtable table = new Hashtable();
LinkedListNode previous = null;
while(n!=null){
if(table.containsKey(n.data)) previous.link = n.link;
else{
table.put(n.data, true);
previous = n;
}
n = n.link;
}
}
}
但不知為何input[]陣列下標為最後的數沒有辦法讀取進連結串列,如果有知道的大神請指點下,謝謝