请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,您好,我在加入dummyhead后对链表进行遍历和获取不太理解。

在链表头加了dummyhead之后,对链表进行插入的时候,找到的是index位置的前一个节点,也就是说,在for循环结束之后得到的prev就是index位置的前一个节点。同理,在进行获取元素的时候,用的是同样的循环,最后要获取index位置的元素,那么在for循环结束之后得到的cur也是index位置的前一个节点,那么index位置的值就是cur.next.e,可是代码为什么和我想得不一样呢


*插入*

 Node prev = dummyhead;
        for (int i = 0; i < index; i++) {
            prev = prev.next;
        }
        Node node = new Node(e);
        node.next = prev.next;
        prev.next = node;
        size++;
    }


*取值*

 Node cur=dummyhead.next;
        for (int i = 0; i <index ; i++) {
            cur=cur.next;
        }
        return cur.e;

正在回答

1回答

因为这两段逻辑,cur和prev的初始值不同。这也是我在这两段逻辑中,使用不同的变量名称的原因。


在插入逻辑中,prev的初始值是dummyHead,即第0个节点之前的节点。所以,我管他叫prev(之前的),在经过index轮循环以后,它指向了第index个元素之前的节点;


在查找逻辑中,cur的初始值是dunnyHEad.next,即第0个节点本身(而非第0各节点之前的节点),所以,我管他叫cur(现在的)。在经过index轮循环之后,它指向了第index个元素所在的节点本身:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 凉橙2 #1
    谢谢bobo老师,没看到cur的初值。。
    回复 有任何疑惑可以回复我~ 2019-03-25 09:23:45
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号