2013-02-16 3 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

В чем проблема, с которой вы столкнулись? –

+0

См. Http://codereview.stackexchange.com/ для обзоров кода. –

+0

Я получаю исключение, когда пытаюсь вставить узел в голову, когда массив имеет элементы. – Leon

ответ

0

Чтобы распечатать элементы списка, необходимо выполнить итерацию, чтобы увидеть содержимое.

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

также ваш объект должен иметь .toString() перекрываться.

надеюсь, что это поможет

+0

Мой объект ANode и метод getData(), но теперь, когда я пытаюсь это сделать ArrayLL all = new ArrayLL(); для (ANode a: all) { \t System.out.println (a.getData()); } } он говорит мне, что он может только перебирать массив или экземпляр Java.lang.Iteratable – Leon

+0

hmm не уверен, надеюсь, что кто-то еще может мне помочь с этим. –

+0

Хорошо, мне удалось отобразить его. Я просто понял, что я храню массив элементов в объекте. Я написал метод getList, который вернет фактический список узлов. Сам объект не является массивом. его как контейнер для массива. – Leon

Смежные вопросы