题目:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例1:
输入:head = [1,3,2] 输出:[2,3,1]
输入:head = [1,2] 输出:[2,1]
输入:head = [] 输出:[]
解题思路:
思路一:(迭代法)
初始化两个指针,一个cur指向head(第一个元素),一个prev之前None(位于head前),每次进行pre后移放到cur位置,而cur每次也后移指向下一个元素(要保证cur能顺利指向下一个元素,需要在cur和pre往后移动之前记录cur下一个指针位置,即next=cur.next),当cur遍历完所有元素指向None时,说明pre此时已位于链表head的最后一个元素,可以返回prev。但是此时只能返回一个当前最后一个元素,因此在cur和prev换位置前,要先将cur指向pre换位置前的位置(cur.next=pre)。
解决方案(python)
ar=[]
while(head):
ar.append(head.val)
head=head.next
pr=[0]*len(ar)
for i in range(len(ar)):
pr[i]=(ar.pop())
return pr
知识点:
列表list.pop(index)函数:
用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
a=['12','34,'56','78']
b=a.pop()
print(b)
print(a)
#输出为:
#78
#['12', '34', '56']
c=a.pop(1)
print(c)
print(a)
#输出为:
#34
#['12', '56']