劍指Offer刷題筆記 從頭到尾列印列表

2021-09-25 20:39:47 字數 1291 閱讀 9210

輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。

lis***oe 這個類儲存的是鍊錶中的乙個節點,它的val屬性儲存的是本節點的值,next屬性儲存的它連線的下乙個節點(下乙個節點同樣是乙個同樣格式的類)。

# -*- coding:utf-8 -*-

# class listnode:

#     def __init__(self, x):

#         self.val = x

#         self.next = none

class solution:

# 返回從尾部到頭部的列表值序列,例如[1,2,3]

def printlistfromtailtohead(self, listnode):

# write code here

result  =

while listnode!=none:

result.insert(0,listnode.val)

listnode = listnode.next

return result 

思路:從列表裡乙個乙個地拿出每乙個數值,儲存到列表裡,作為輸出。

拿出數值:利用 listnode 作為指標,listnode不僅代表列表的節點。通過   listnode = listnode.next  使指標能夠移動,指向每乙個節點。終止條件就是指標為空,說明遍歷完鍊錶。

儲存數值:  result.insert(0,listnode.val)  取出的數值,從頭部插入。

另外看到乙個大神的遞迴版本:

def printlistfromtailtohead(self, listnode):

# write code here

iflistnode is none:

return

returnself.printlistfromtailtohead(listnode.next) + [listnode.val]

遞迴呼叫printlistfromtailtohead,在傳入引數的時候,相當於listnode = listnode.next,同樣是移動指標,

+ [listnode.val]取出數值,並儲存,並且使得先得出的數值儲存在後面。

劍指offer 6 從頭到尾列印鍊錶

輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值 用陣列返回 示例 1 輸入 head 1,3,2 輸出 2,3,1 th 逆序列印 我們可以將鍊錶loop一遍,push到棧中。然後pop出 因為棧是先進後出 所有最後順序就是逆序的順序。這裡建議push最好是val push node的話 占用...

劍指offer系列0 替換空格 從頭到尾列印鍊錶

這是最前面的幾個題,我之前寫在github上了,現在為了統一補回來。面試題4 替換空格 字串的名字是乙個指標變數,裡面存的內容是其第乙個字元的位址。如字串a 10 則 a,a得到的均相同,都是a陣列的第乙個元素的位址。1 include2 using namespace std 3class sol...

劍指 4 從頭到尾列印鍊錶

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。法一 使用棧,先進後出 struct listnode class solution int n stk.size for int i 0 i方法二 vectorresult while head null return vector r...