輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個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
if
listnode is none:
return
return
self.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...