试图复制Java链接列表......我做错了什么?

时间:2013-10-22 19:28:19

标签: java list loops linked-list copy

所以我想制作一个单独的列表,以便不通过我的方法参数操纵放入的列表。基本上我希望当循环结束时“结果”与“p”相同......但由于某种原因它不会出现正确。

private static Node<Integer> multByScalarAndCarry(Node<Integer> p , int k, int c){
          int carry = c; //carry is taken from parameter
          Node<Integer> result = new Node<Integer>();
          Node<Integer> z = result; //head for the copy list
          Node<Integer> P = p; //pointer for the list being copied
          //copy p into result
          while(P.next!=null){
              z.item = P.item;
              z.next = new Node<Integer>();
              z = z.next;
              P = P.next;
          }
...
}

忽略k和c,它们与我的问题无关。我非常接近完成这个方法,这是我需要的最后一块。请帮忙!

编辑[解决方案]: 对于那些将来遇到此问题的人,我使用一种复制列表的单独方法做了一些思考。

这是一个递归解决方案:

private static Node<Integer> copyNode(Node<Integer> p){
       if(p == null) //if empty, return the same thing
           return p;
       Node<Integer> result = new Node<Integer>();
       result.item = p.item;// construct a node item copy of p's item
       result.next = copyNode(p.next); //attach list doing this for all nodes of p
       return result; //return the result.
}

1 个答案:

答案 0 :(得分:1)

z = z.next是问题所在。您正在将当前节点更改为之前行中的实例节点。