#java #linked-list #nodes
#java #связанный список #узлы
Вопрос:
Если кто-нибудь может помочь мне разобраться с этой проблемой, я в буквальном смысле отдам вам своего первенца. Приношу извинения за любые проблемы с форматированием и т.д., Поскольку это моя первая публикация (пожалуйста, будьте полегче со мной !!).
В настоящее время я пытаюсь найти метод add для общего класса связанного списка. Вот его описание: Вставляет указанный объект в указанную позицию в этом списке. Сдвигает объект, находящийся в данный момент в этой позиции (если таковой имеется), и любые последующие объекты вправо (т. Е. добавляет единицу к их индексам).
Вот код, который у меня в настоящее время есть для метода, исключая обработку исключений.
next = head;
size ;
for (int i = 0; i < index; i ) {
next = next.getNext();
} // for
GenListNode<T> prev = next;
GenListNode<T> current = next;
for (int count = 0; count < size - 1; count ) {
prev = next;
current = next;
for (int i = count; i < size - 3; i ) {
prev = prev.getNext();
} // for
for (int j = count; j < size - 2; j ) {
if (current.getNext() == null) {
current.setNext(new GenListNode<T>());
} // if
current = current.getNext();
} // for
current.setData(prev.getData());
} // for
next.setData(obj);
Вот код моего класса GenListNode.
private GenListNode<T> next;
private T data;
public GenListNode(T data, GenListNode<T> next) {
this.next = next;
this.data = data;
} // GenListNode
public GenListNode(T data) {
this.data = data;
} // GenListNode
public GenListNode() {
} // GenListNode
public void setData(T data) {
this.data = data;
} // setData
public void setNext(GenListNode<T> n) {
this.next = n;
} // setNext
public T getData() {
return data;
} // getData
public GenListNode<T> getNext() {
return next;
} // getNext
Проблема, с которой я сталкиваюсь в данный момент, заключается в том, что когда я добавляю объект в индекс где-то в середине списка, это работает, однако, когда я пытаюсь добавить в начало списка, самый последний элемент списка исчезает. В общем, этот код стал несколько запутанным и беспорядочным, и он не выполняет то, что должен делать. Приветствуется любая помощь, и если я могу что-то уточнить, пожалуйста, дайте мне знать.
Комментарии:
1. Я не уверен, что там делает ваш метод, но обычно, чтобы вставить что-то в связанный список, вы просто перебираете next (), пока не попадете в нужное место, затем создаете новый узел, устанавливаете new-> next = previous-> next, а затем previous-> next = new.
2. @azurefrog И когда вы говорите «предыдущий», вы имеете в виду узел в месте непосредственно перед правильным местом, правильно?