1

我是一个刚刚学习Java的学生。明天我有一个大测试,我对某行代码感到困惑。

insertAfter 方法查找传递给该方法的linkedList 中的数字,并在匹配后插入一个新节点。我不明白怎么

 curr.setNext(curr.getNext()) 

将带我们到列表中可能是我们正在寻找的数字的下一个节点。那么这个命令是如何遍历链表的呢?

curr=curr.getNext() 不是更有意义吗?

谢谢,对不起,如果这很简单......我现在很困惑

// assume firstInList is in the list
public void insertAfter(int firstInList, Node toAdd){
    Node curr = head;

    while( curr.getData() != firstInList ){
        curr.setNext(curr.getNext());
    }

    curr.setNext(toAdd);        
}


   Node class
  {
   int getData() {return data};
   void setData(int data) {this.data =data};
   Node getNext() {return next};
   void setNext(Node next) {this.next = next};
  }

}

附加方法 该方法被调用

   public void insertBefoe (Node, inList, Node toAdd)
4

2 回答 2

1

看起来很清楚,代码应该是:

curr = curr.getNext()

代替

curr.setNext(curr.getNext());

此外,以下内容被破坏:

curr.setNext(toAdd);        

执行此操作后,列表后面的部分firstInList将丢失。

于 2013-03-01T09:07:03.843 回答
0

代码看起来不正确。

头从哪里来?看起来它永远不会从while循环中出来,除非它setNext(..)也以某种方式改变了代码getData()

不幸的是,由于我们没有全貌,因此很难提供帮助

于 2013-03-01T09:04:07.477 回答