2014-04-06 3 views
0

У меня возникли проблемы с добавлением элементов в конец моего списка. Он продолжает добавлять в начало списка. Я вот уже какое-то время, просто застрял и потерял.Добавление нового элемента в конец узла (Java)

public class RefUnsortedList<T> implements ListInterface<T> { 

     protected int numElements;  // number of elements in this list 
     protected LLNode<T> currentPos; // current position for iteration 

     // set by find method 
     protected boolean found;  // true if element found, else false 
     protected LLNode<T> location; // node containing element, if found 
     protected LLNode<T> previous; // node preceeding location 

     protected LLNode<T> list;  // first node on the list 

     public RefUnsortedList() { 
     numElements = 0; 
     list = null; 
     currentPos = null; 
     } 

     public void add(T element) { 
     // Adds element to this list. 


     LLNode<T> newNode = new LLNode<T>(element); 

     newNode.setLink(list); 
     list = newNode; 
     numElements++; 

Вот мой основной класс:

RefUnsortedList<Patient> patient1 = new RefUnsortedList<Patient>(); 
Patient entry; 
entry = new Patient("Tam Ngo", "0848896"); 
patient1.add(entry); 
entry = new Patient("Mike You", "0848896"); 
patient1.add(entry); 

System.out.println(patient1.toString()); 
+0

Подумайте, что вы делаете немного ... вы создаете новый узел, вы устанавливаете ссылку (следующий) нового узла в старый список и устанавливаете «первый узел в списке» на новый узел. Это поместит узел первым в список. –

ответ

0

метод добавить в Java имеет вторую подпись, которую вы можете использовать: http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(int, E)

Вы можете указать, где вы хотите добавьте свой следующий элемент

+0

большое спасибо! Я использовал часть массива ArraySortedList, чтобы найти местоположение, а затем установить новый узел в предыдущее место. – tamngoman

0

Как написано, переменная list содержит первый узел в списке. Теперь, ваш метод add включает в себя строку:

list = newNode; 

Эта линия немедленно устанавливает узел вы добавляете в начало списка!

Возможное исправление заключается в поддержании двух указателей: от одного до начала списка (для поиска по нему) и от одного до последнего элемента, допустим, вы называете его last. В этом случае для добавления узла можно сделать следующее:

last.setLink(newNode); 
last = newNode; 

Здесь мы устанавливаем связь с текущим последним узла на новый узел, а затем сделать новый узел нового последним узел.

Надеюсь, это поможет!

+0

Я думаю, я знаю, что вы имеете в виду. Я изучил заголовок и трейлер в классе, но не знаю, как его реализовать в RefUnsortedList. Мое понимание этого неясно – tamngoman

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