簡體   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