【问题标题】:LinkedList Recursive Appending [duplicate]LinkedList递归追加[重复]
【发布时间】:2020-10-29 22:44:43
【问题描述】:

我需要递归地将一个节点附加到一个链表,不知道为什么我的代码不起作用

public void RecursiveAppend(Node example, Node add){
   if(example == null){
       example = add; 
   } else {
       RecursiveAppend(example.next, add);
   }
}

打印列表的方法

public void IterativeTraversal(){
       Node example = m_head;
       while(example != null){
           System.out.print(example.data + " ");
           example = example.next;
       }
   }
public class LinkedListDemo {
    public static void main (String [] args){
        LinkedList example = new LinkedList();
        Node A = new Node(10);
        Node B = new Node(30);
        Node C = new Node(50);
        Node D = new Node(70);
        example.append(A);
        example.append(B);
        example.append(C);
        example.RecursiveAppend(D);
        example.IterativeTraversal();
    }
}

结果:1​​0 30 50

【问题讨论】:

标签: java


【解决方案1】:

所以null + 1 = null null * 1 = null 类似你在这里设置examplenull

if(example == null){
  example = add; 
}

当有 null 值时,您的基本条件将被执行。 所以说你现在的节点数据是40,它的下一个是null,所以在40 RecursiveAppend(example.next, add);之后,这将成为null的例子,所以你的基本情况是if(example == null),在那里它的example = add;意味着null = add 为空。
为了克服这个问题,当current node next 有null 喜欢时,您的基本情况应该达到。

 if(example.next == null){
       example.next = add; 
   }

这将解决问题。整体代码

public void RecursiveAppend(Node example, Node add){
   if(example.next == null){
       example.next = add; 
   } else {
       RecursiveAppend(example.next, add);
   }

【讨论】:

    【解决方案2】:

    您可能想检查 example.next == null 是否然后设置 example.next 以添加而不是检查 example == null 因为如果您需要能够分配 example.next 并且如果您已移动则无法执行此操作通过了节点。

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 2012-04-10
      • 2020-05-05
      • 1970-01-01
      • 2016-11-12
      • 2023-03-21
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      相关资源
      最近更新 更多