Вот мой полный исходный код Java для реализации отдельно связанного списка. Я видел много учебников, где они говорили о вставке узла в начале. Итак, я решил добавить в мой код метод insertAfterNode(int y)
, где я могу добавлять данные внутри узла после определенного узла.Вставка после определенного узла в связанном списке
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package datastructures;
/**
*
* @author Administrator
*/
public class Link {
int data;
Link next;
public Link(int d) {
this.data = d;
}
public void display() {
System.out.println(data);
}
public static class LinkedList {
Link first;
public void insertItemFirst(int x){
Link newLink = new Link(x);
newLink.next = first;
first = newLink;
}
public Link deleteFirst() {
Link temp = first;
first = first.next;
return temp;
}
public void displayList() {
Link current = first;
while (current != null) {
current.display();
current = current.next;
}
}
// START Of METHOD
public void insertAfterNode(int y) {
// Considering LinkedList is Sorted
Link newNode = new Link(y);
Link current = first;
while (current != null) {
while (current.data < y) {
current = current.next;
newNode.next = current;
current = newNode;
}
}
}
//END Of METHOD
}
public static void main(String[] args) {
LinkedList addelements = new LinkedList();
addelements.insertItemFirst(20);
addelements.insertItemFirst(30);
addelements.insertItemFirst(40);
addelements.insertItemFirst(50);
addelements.insertAfterNode(44);
addelements.displayList();
System.out.println("After Calling Deletion Method Once ");
addelements.deleteFirst();
addelements.displayList();
}
}
Этот код продолжает работать в Netbeans, и мне пришлось остановить сборку, чтобы выйти из нее. Я считаю, что что-то не так с моей реализацией метода. Пожалуйста, дайте мне знать, что не так в моем следующем методе:
public void insertAfterNode(int y) {
// Considering LinkedList is Sorted
Link newNode = new Link(y);
Link current = first;
while (current != null) {
while (current.data < y) {
current = current.next;
newNode.next = current;
current = newNode;
}
}
}
Код работает просто отлично, без метода выше.
Ваш внешний 'while loop' никогда не заканчивается. У него нет возможности завершить работу, за исключением того, что вы введете новый узел в конце. Вам нужно переделать свою логику. –
На высоком уровне разделите эту проблему на две части. 1. Найдите нужный узел 2. Вставьте новый узел после заданного узла Подробнее: [Проблемы понимания концепции узлов и связанного списка] (http://stackoverflow.com/questions/24895790/problems-understanding -Концепция-из-узлов-и-связанный список/24895863 # 24895863) – Braj