美文网首页@IT·互联网IT面试
剑指offer——从尾到头打印链表

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

作者: 柠檬乌冬面 | 来源:发表于2016-08-24 21:28 被阅读181次

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

1.题目简介

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

2.重点分析

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



指针的指针图解


那么怎么办?

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

指针的指针做法

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

指针的引用做法

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

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

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


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

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

相关文章

网友评论

    本文标题:剑指offer——从尾到头打印链表

    本文链接:https://www.haomeiwen.com/subject/reuosttx.html