Любые советы о том, как подойти к этой проблеме?
Поскольку вы спрашивали советы о том, как начать работу, и у вас уже есть двусвязный список, приведу простой пример.
Учитывая, что ниже приведен узел в двусвязном списке.
// Doubly Linked list Node
class Node {
int data;
Node prev;
Node next;
// Constructor to create a new node
// next and prev is by default initialized as null
Node(int d) { data = d; }
}
Следующий метод может быть реализован для вашего двусвязного списка. Вы должны предоставить Узел, в который будет добавлен новый Узел после предоставленного Узла, а также указатели следующего и предыдущего для текущего Узла и вновь добавленного Узла будут обновлены для отражения вновь добавленного Узла.
/* Given a node (currentnode). insert a new node after the given
node(currentNode) */
public void InsertAfterNode(Node currentNode, int newData)
{
// check if the given current node is NULL
if (currentNode == null) {
System.out.println("The given current node cannot be NULL ");
return;
}
// allocate node
// put in the data
Node new_node = new Node(newData);
// Make next of new node as next of current node
new_node.next = currentNode.next;
// Make the next of current node as new_node
currentNode.next = new_node;
// Make current node as previous of new_node
new_node.prev = currentNode;
// Change previous of new_node's next node
if (new_node.next != null)
new_node.next.prev = new_node;
}
Можно реализовать аналогичный метод, наоборот, для вставки нового узла перед указанным c узлом.