zoukankan      html  css  js  c++  java
  • 链表中head->next = p;和p=head->next;之间的区别

    最近这两天在看递归,然后,看了几个例子,其中有一个单链表反转的例子可以使用递归解决,但是这里却有一个问题让我迷惑了一会,就是链表操作中这两句话的含义:
    以下图中的单向链表为例:

    Node preNode = null;
    Node nextNode = null;
    nextNode = head.next;//1
    head.next = preNode;//2
    

    第1行语句:head.next为2这个结点,获得这个结点后将其赋值给了nextNode变量值。
    第2行语句:正确的含义是将head头指针指向preNode这个null结点。但是我刚开始有个误区就是,可能工作中用到链表的时候很少,也没刷过题,最近才开始看数据结构和算法部分,我想着head.next不就是2结点么此时,将null结点赋值给2结点,但是这样是不对的,不知道大家是否会和我一样会这样想,觉得有误区,一会搞不明白。

    我这里把我想的说下,就是加入我们就按照上面我想的思路走,看看会发生什么,就知道为啥这样理解是不对的了。即head.next是2结点此时,将null结点赋值给2结点,那我们通过1结点向后查找后一个结点的时候,结点还为2,那此时2结点到底为null,没有data值,还是有值为B嘞,这样是不是互相矛盾了。
    接下来画下图,看的更清楚一些:
    nextNode = head.next含义图:

    head.next = preNode含义图:

    有了上面的理解后,今天晚上准备再写个反转链表的文章,趁热打铁。希望快快进步呀,加油嘻嘻,我也学会文章里加可爱的图了,有时候读着亲切可爱,让略显枯燥的代码生活增添一丝乐趣,可以更好地搬砖哈哈哈

  • 相关阅读:
    递归函数
    Java以缓冲字符流向文件写入内容(如果文件存在则删除,否则先创建后写入)
    Python将文本内容读取分词并绘制词云图
    查询数据库数据并传入servlet
    向数据库添加记录(若有则不添加)
    2月16日学习记录
    2月15日学习记录
    2月14日学习记录
    Echart学习
    JavaScript深入学习(六)Ajax技术
  • 原文地址:https://www.cnblogs.com/lovelywcc/p/14203657.html
Copyright © 2011-2022 走看看