![](/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.