Перед тем, как понизить голос, пожалуйста, учтите, что я проверил другие ответы, но я не смог найти ответ в Java.Я просто предоставляю проблемный метод.При необходимости я могу поделиться полным кодом, но это просто учебный код, ничего особенного.
Метод не работает:
public void insert_before_node(Node givenNode, int data) {
Node newNode = new Node(data);
newNode.prev = givenNode.prev;
givenNode.prev = newNode;
newNode.next = givenNode;
if(newNode.prev != null)
newNode.prev.next = newNode;
}
Другой метод добавления, который работает:
public void insert_front(int data) {
Node newNode = new Node(data);
newNode.next = head;
newNode.prev = null;
if(head != null)
head.prev = newNode;
head = newNode;
}
Метод печати для отладки:
public void print() {
Node n = head;
while(n != null){
System.out.println(n.data);
n = n.next;
}
}
Класс DoublyLinkedList:
public class DoublyLinkedList {
static class Node {
int data;
Node next;
Node prev;
Node(int data) {
this.data = data;
this.next = null;
this.prev = null;
}
}
Node head;
DoublyLinkedList() {
this.head = null;
}
public static void main(String[] args) {
DoublyLinkedList ll = new DoublyLinkedList();
ll.insert_front(0);
ll.insert_before_node(ll.head, 100);
ll.print();
}
}
Реализации LinkedList и Node очень просты.Найдите здесь: https://www.geeksforgeeks.org/doubly-linked-list/
Сначала я создаю связанный список, вставляю значение, чтобы сделать заголовок ненулевым, а затем использую метод выше, чтобы вставить что-то еще.Вставка в front, end после того, как узел работает, однако этот insert_before_node () не работает.То, что я вставил этим методом, не отображается на моей распечатке.
Я тоже рисую на бумаге, но все еще не могу найти проблему.
Ссылка на geeksforgeeks также не имеет реализации Java дляэтот метод.