1. 程式人生 > >從連結串列中移除重複節點

從連結串列中移除重複節點

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[]陣列下標為最後的數沒有辦法讀取進連結串列,如果有知道的大神請指點下,謝謝