![](/img/trans.png)
[英]Will adding a Node recursively work in any position of a Singly Linked List?
[英]How to output the correct linked list when Inserting a node at a specific position in a singly linked list recursively?
我試圖遞歸地實現它,但它沒有返回正確的鏈接列表與所有正確的節點。
我嘗試在遞歸調用后打印出節點,並且以相反的順序給出了正確的鏈接列表,但由於某種原因,當我返回不起作用的頭時。
public Node<E> insertNodeAtPosition(Node<E> head,E element,int position)
{
Node<E> node = new Node<E>(element,null);
if(head==null){
return node;
}
if(position==0)
{
Node<E> current = head;
head = node;
head.next = current;
}
insertNodeAtPosition(head.next,element,position-1);
return head;
}
我希望輸出包含插入的節點,但它不會出現在那里
這段代碼:
public static <E> Node<E> insertNodeAtPosition(Node<E> head, E element, int position) {
return insertNodeAtPosition(null, head, element, position);
}
private static <E> Node<E> insertNodeAtPosition(Node<E> prev, Node<E> head, E element, int position) {
if (position == 0) {
Node<E> newNode = new Node<>(element, null);
if (prev != null) {
prev.next = newNode;
}
newNode.next = head;
return newNode;
}
return insertNodeAtPosition(head, head.next, element, position - 1);
}
將返回新插入的節點。
編輯:沒有額外的方法:
private static <E> Node<E> insertNodeAtPosition(Node<E> prev, Node<E> head, E element, int position) {
if (position == 0) {
Node<E> newNode = new Node<>(element, null);
if (prev != null) {
prev.next = newNode;
}
newNode.next = head;
return newNode;
}
return insertNodeAtPosition(head, head.next, element, position - 1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.