Следующий код - моя попытка реализовать классы SinglyLinkedListNode
и SinglyLinkedList
и использовать метод SinglyLinkedListNode reverse(SinglyLinkedListNode head)
для обращения к этому связанному списку.
Входные данные состоят из первой строки с указанием количества тестовых случаев, t
. И для каждого тестового примера первая строка, n
, представляет количество элементов в связанном списке. В следующем n
количестве строк каждая будет содержать элемент из этого списка, поэтому входные данные выглядят следующим образом:
1 (number of test cases)
5 (number of elements in list)
1 (element in list)
2 (element in list)
3 (element in list)
4 (element in list)
5 (element in list)
Как исправить следующий код, чтобы он мог распечатать этот перевернутый связанный список, таким образом, что результат будет следующим:
5 4 3 2 1
Поскольку мой код вместо этого выводит следующее:
1
5
1
2
3
4
5
1 2 3 4 5
Мой код:
import java.util.Scanner;
public class ReverseLinkedList {
static class SinglyLinkedListNode {
public int data;
public SinglyLinkedListNode next;
public SinglyLinkedListNode(int nodeData) {
data = nodeData;
next = null;
}
}
static class SinglyLinkedList {
private SinglyLinkedListNode head;
private SinglyLinkedListNode tail;
public SinglyLinkedList() {
SinglyLinkedListNode head = null;
SinglyLinkedListNode tail = null;
}
public void insertNode(int nodeData) {
SinglyLinkedListNode node = new SinglyLinkedListNode(nodeData);
if (this.head == null) {
this.head = node;
} else {
this.tail.next = node;
}
this.tail = node;
}
public SinglyLinkedListNode reverse(SinglyLinkedListNode head) {
SinglyLinkedListNode previous = null;
SinglyLinkedListNode current = head;
SinglyLinkedListNode next = null;
while (current != null) {
next = current.next;
current.next = previous;
previous = current;
current = next;
}
return previous;
}
public void printLinkedList() {
SinglyLinkedListNode node = head;
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
SinglyLinkedList list = new SinglyLinkedList();
int testCases = input.nextInt();
if (testCases <= 10) {
input.nextLine();
int size = input.nextInt();
if (size <= 1000) {
for (int i = 0; i < size; i++) {
list.insertNode(input.nextInt());
}
list.reverse(list.tail);
list.printLinkedList();
}
}
}
}