题目描述
输入一个链表,从尾到头打印链表每个节点的值。
思路:1.从尾到头,类似先进后出,stack。2.反转链表。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> data;
stack<int> data1;
ListNode* p=head;
while(p!=NULL)
{
data1.push(p->val);
p=p->next;
}
while(!data1.empty())
{
data.push_back(data1.top());
data1.pop();
}
return data;
}
};
python
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
data=[]
while(listNode !=None):
data.append(listNode.val)
listNode=listNode.next
return data[::-1]
# write code here
append与extend的区别
list 中 append()和extend()的区别
(1) L.append(object)返回值为None
append(object) 是将一个对象作为一个整体添加到列表中,添加后的列表比原列表多一个元素,该函数的参数可以是任何类型的对象,该函数没有返回值
(2) L.extend(iterable)返回值为None
extend(iterable) 是将一个可迭代对象中的每个元素逐个地添加到列表中,可迭代对象中有几个元素,添加后的列表就比原列表多几个元素,该函数的参数必须是可迭代的对象
>>> listA = [1, 2, 3]
>>> listB = [4, 5, 6]
>>> listA.append(listB)
>>> print(listA)
[1, 2, 3, [4, 5, 6]]
>>> listA.extend(listB)
[1, 2, 3, [4, 5, 6], 4, 5, 6]