2013-02-16 29 views
1

我想實現一個基於數組的鏈接列表,它必須按字母順序排序。我有代碼插入和節點到目前爲止,但想檢查我是否是正確的,如果有人可以幫我寫一個主要的方法來顯示列表中的元素。以下是我目前的代碼。通過使用基於陣列的鏈接列表實現ADT列表

package listpackage; 

import java.io.IOException; 

public class ArrayLL { 
private int MAX_CAP = 100; 
private ANode[] list; 
private int size; 

public ArrayLL(){ 
    list = new ANode[MAX_CAP]; 
    list[list.length-1] = new ANode(null, -1); 
    for(int i = 0; i < list.length-1; i++){ 
     list[i] = new ANode(null, i+1); 
    } 
    size = 0; 
} 

public void addElem(String s) throws IOException{ 
    if(size == 0){ 
     ANode a = new ANode(s, -1); 
     list[0] = a; 
     size++; 
    }else if(size == MAX_CAP + 1){ 
     throw new IOException("List is full"); 
    }else{ 
     ANode a = list[0]; 
     for(int i = 0; i< size; i++){ 
      if(a.getData().compareTo(s)>0){ 
       ANode b = new ANode(s,i+1); 
       for(int j = size; j > i; j--){ 
        list[j] = list[j+1]; 
       } 
       list[i] = b; 
       size++; 
       break; 
      }else{ 
       ANode c = new ANode(s,-1); 
       list[size+1] = c; 
      } 
     } 
    } 
} 

public int getSize(){ 
    return size; 
} 

} 

class ANode{ 
private String data; 
private int link; 

public ANode(String d, int l){ 
    data = d; 
    link = l; 
} 

public String getData(){ 
    return data; 
} 

public int getLink(){ 
    return link; 
} 
} 
+0

您面臨的具體問題是什麼? – 2013-02-16 23:11:56

+0

有關代碼評論,請參閱http://codereview.stackexchange.com/。 – 2013-02-16 23:14:40

+0

當我嘗試在數組包含元素時在頭部插入節點時,出現異常。 – Leon 2013-02-16 23:19:26

回答

0

要打印列表中的元素,您需要遍歷它以查看內容。

for(Object obj : list) { 
    System.out.println(obj); 
} 

此外您的對象還需要.toString()重寫。

希望這可以幫助

+0

我的對象是ANode,它有一個getData()方法,但現在當我嘗試這種方式時,ArrayLL all = new ArrayLL(); (aode.getData());其中, } 它告訴我,它只能迭代Java.lang.Iteratable – Leon 2013-02-16 23:42:31

+0

的數組或實例嗯不知道希望別人可以幫我這個.. – 2013-02-16 23:47:39

+0

好吧,我設法顯示它。我剛剛意識到我將元素數組存儲在一個對象中。因此,我編寫了一個方法getList,它將返回實際的節點列表。該對象本身不是一個數組。它就像一個容器陣列。代碼不會更新索引 – Leon 2013-02-16 23:55:12