日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer06.从尾到头打印链表

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer06.从尾到头打印链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

劍指offer06.從尾到頭打印鏈表

      • 1. 改變鏈表結構的解法
      • 2.可以使用棧,遞歸,或者直接反向輸出數組

提示:
若是面試遇到此題,最好先向面試官確認是否可以改變鏈表的結構,

1. 改變鏈表結構的解法

我們可以想到,先反轉鏈表然后在一個一個的輸出
不熟悉反轉鏈表的建議先去看一下反轉鏈表
反轉鏈表的經典四句
t = pre.Next
pre.Next = cur
cur = pre
pre = t

func reversePrint(head *ListNode) []int { // 反轉鏈表然后再輸出數組if head == nil {return nil}var cur *ListNode = nilpre := headvar t *ListNodefor pre != nil {t = pre.Nextpre.Next = curcur = prepre = t}res := make([]int,0)for cur != nil{res = append(res,cur.Val)cur = cur.Next}return res }

2.可以使用棧,遞歸,或者直接反向輸出數組

遞歸有一個缺點是,當鏈表足夠長的時候,函數的調用棧可以會爆
所以不建議使用
棧的特點先進后出也可以實現但是Go語言中沒有現成的棧類型
需要自己實現比較麻煩,其他語言有棧的類型就比較方便
這里講解一下如何反向輸出數組
解題步驟 :
1.先遍歷鏈表統計出節點的個數count
2.再循環count次,將鏈表中的節點的data域依次加入到數組中
3.返回數組就成功實現了反轉輸出

func reversePrint(head *ListNode) []int {// 統計節點個數然后反轉數組if head == nil{return nil}count := 0for p := head;p != nil;p = p.Next{count++}array := make([]int,count)for ;head != nil ;head = head.Next{array[count - 1] =head.Val count--}return array }

注意數組下標不要越界哦 所以是count - 1
切片[]int是引用類型,零值為空所以可以返回nil

總結

以上是生活随笔為你收集整理的剑指offer06.从尾到头打印链表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。