Сначала создайте связанный список, затем распечатайте его, а затем измерьте его длину:
Сейчас я использую параметр для расчета длины. Я пытался сделать его необязательным параметром, но это не сработало. Чтобы getLinkedListLength работал, параметр должен быть инициализирован нулем.
Есть ли лучший способ сделать это?
Я разработчик C# и использую Java в качестве изучение языка для решения проблем с codeом. Для меня это было бы легко сделать на C#, но не на Java.
// Simple linked list class
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
// Build a linked list of ints of a given length
public static ListNode buildLinkedList(int length) {
ListNode head = new ListNode(1);
ListNode currNode = head;
for (int i = 2; i <= length; i++) {
System.out.println("i = " + i);
currNode.next = new ListNode(i);
currNode = currNode.next;
}
return head;
}
// Calculate the length
static int getLinkedListLength(ListNode head, int length) {
if (head == null) {
return length;
}
length++;
return getLinkedListLength(head.next, length);
}
// Print the linked list
public static void printLinkedList(ListNode node) {
System.out.print("Linked list = [");
while (node.next != null) {
System.out.print(node.val + ", ");
node = node.next;
}
System.out.print(node.val);
System.out.print("]");
System.out.println();
}
// Test code
ListNode node = LinkedLists.buildLinkedList(5);
printLinkedList(node);
System.out.println("Length: " + getLinkedListLength(node, 0));
Вышеслав
Вопрос задан7 января 2024 г.