Я пытаюсь написать метод для добавления в конце одного связанного списка в постоянное время. Я не знаю, как назначить указатель на последний узел в списке в постоянное время. Этот метод работает в 0 (п):добавление в конце односвязного списка в постоянное время
public void insertEnd(Object obj) {
if (head == null) {
head = new SListNode(obj);
} else {
SListNode node = head;
while (node.next != null) {
node = node.next;
}
node.next = new SListNode(obj);
}
size++;
}
Это начало моего нового метода:
public void addLast(SListNode obj){
//if the list is empty, the new element is head and tail
if(tail == null){
obj.next = null;
head = tail = obj;
}else{ -----> here I'm confused
}
}
Это мой SLIST класс:
public class SList {
private SListNode head;
private SListNode tail;
private int size;
public SList() {
size = 0;
head = null;
tail = null;
}
Может хранить конец списка, как поле в классе? –
Я сделал это, но как вы на самом деле назначили его последнему элементу? – Dodi
@Frugo, 'tail.next = obj;' – BLuFeNiX