剑指offer——从尾到头打印链表

文章大纲:
1.题目简介
2.重点分析
3.知识拓展

1.题目简介

输入一个链表的头结点,从尾到头反过来打印出每个节点的值

2.重点分析

书上说除了函数,pHead仍然是空指针。卡那里把指针当参数直接传进去,是改变不了指针的。还会造成问题。
下面帮助理解和分析



指针的指针图解


那么怎么办?

两种方法:1.指针的指针 2.指针的引用

指针的指针做法

这里注意 要初始化一个指针为空,而不是初始化一个指针的指针为空。
我一开始以为,参数那里是两颗星,那我这里也应该是初始化**(too young)
然后在传入参数的时候是传入指针的地址进去。&

指针的引用做法

这两者的写法区别不大,指针的引用就不用加&取地址符了,同时函数里面就是把pHead前面的*都去掉即可。

这两种方法哪种更有优势呢?
我去网上查阅资料的时候,看到是说指引的引用更好。
然后我做了一个测试,果然,用指针的指针还是会多浪费一个内存出来。
而用引用则一直在修改原来的对象,始终如一。

3.知识拓展
在使用返回值时,千万别返回指向“栈内存”的指针、引用,因为该内存在函数结束时自动消亡了,返回的指针是个野指针了。例如


在函数中不定义数组,定义指针,示例:

此时的程序是正确的,但是有一点,此时分配的内存处于静态区,是只可以读取但是不可以修改的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 输入一个链表,从尾到头打印链表每个节点的值。 思路 总共有五种方法,如下: 将原链表的值存在一个栈中,然...
    云胡同学阅读 432评论 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,536评论 1 51
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,795评论 24 1,002
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,039评论 0 12
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,586评论 0 1