У меня есть следующий код, чтобы полностью изменить Связанный список:Learning Обратный Связанный список
public class ProgrammingInterviews {
public static void main(String[] args) {
List list = new List();
list.add(new Node(1));
list.add(new Node(2));
list.add(new Node(3));
list.add(new Node(4));
list.reverse();
System.out.println(list);
}
}
class List {
Node head;
public List() {
head = new Node(0);
}
public void add(Node node) {
if (head.next == null) {
head.next = node;
} else {
Node temp = head.next;
while (temp.next != null) {
temp = temp.next;
}
temp.next = node;
}
}
public void reverse() {
this.head = reverse(this.head);
}
private Node reverse(Node n) {
if (n == null || n.next == null) {
return n;
}
Node remaining = reverse(n.next);
n.next.next = n;
n.next = null;
return remaining;
}
public String toString() {
Node temp = head;
String result = "HEAD";
while (temp.next != null) {
result = result + "->" + temp.next.data;
temp = temp.next;
}
return result;
}
}
class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
Я пытаюсь заставить его печатать HEAD->4->3->2->1
с безрезультатно. Но, это печать HEAD->3->2->1
. Я чего-то не хватает.
Кроме того, если у вас есть советы по решению этих проблем, это действительно поможет мне. Я занимаюсь программированием в течение некоторого времени. Это очень хорошо для решения проблем. Я придумываю наивные решения. Но на территории структур данных и алгоритмов, где мы размышляем о разных идеях/способах решения проблемы, меня всегда считают коротким.
Например, в этой проблеме я никогда бы не подумал, что использование рекурсии есть решение. Я использую решение, смотрящее в другое место. Это действительно поможет, если я получу несколько советов, которые помогут мне найти правильный путь для решения этих проблем.
Научиться использовать отладчик для пошагового выполнения кода. –
То, как это было написано, напоминает мне об удивительном месте, где мне нравится практиковать свой код. [HackerRank - Обратный список ссылок] (https://www.hackerrank.com/challenges/reverse-a-linked-list). Поскольку ваш титул гласит, что вы учитесь, я чувствую, что это отличное место для расширения вашего набора навыков.:) –