繁体   English   中英

如何在递归地在单个链表中的特定位置插入节点时输出正确的链表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM