劍指offer——從尾到頭打印鏈表

文章大綱:
1.題目簡介
2.重點分析
3.知識拓展

1.題目簡介

輸入一個鏈表的頭結點,從尾到頭反過來打印出每個節點的值

2.重點分析

書上說除了函數,pHead仍然是空指針。卡那里把指針當參數直接傳進去,是改變不了指針的。還會造成問題。
下面幫助理解和分析



指針的指針圖解


那么怎么辦?

兩種方法:1.指針的指針 2.指針的引用

指針的指針做法

這里注意 要初始化一個指針為空,而不是初始化一個指針的指針為空。
我一開始以為,參數那里是兩顆星,那我這里也應該是初始化**(too young)
然后在傳入參數的時候是傳入指針的地址進去。&

指針的引用做法

這兩者的寫法區別不大,指針的引用就不用加&取地址符了,同時函數里面就是把pHead前面的*都去掉即可。

這兩種方法哪種更有優勢呢?
我去網上查閱資料的時候,看到是說指引的引用更好。
然后我做了一個測試,果然,用指針的指針還是會多浪費一個內存出來。
而用引用則一直在修改原來的對象,始終如一。

3.知識拓展
在使用返回值時,千萬別返回指向“棧內存”的指針、引用,因為該內存在函數結束時自動消亡了,返回的指針是個野指針了。例如


在函數中不定義數組,定義指針,示例:

此時的程序是正確的,但是有一點,此時分配的內存處于靜態區,是只可以讀取但是不可以修改的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 題目描述 輸入一個鏈表,從尾到頭打印鏈表每個節點的值。 思路 總共有五種方法,如下: 將原鏈表的值存在一個棧中,然...
    云胡同學閱讀 441評論 0 0
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,541評論 1 51
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,803評論 24 1,002
  • 多線程、特別是NSOperation 和 GCD 的內部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,043評論 0 12
  • 307、setValue:forKey和setObject:forKey的區別是什么? 答:1, setObjec...
    AlanGe閱讀 1,592評論 0 1