剑指offer:从头到尾打印链表

题目

题目链接
剑指offer:从头到尾打印链表
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

解题思路

首先题目实际给出的要求是返回vector类型的容器,但输入的是结构体组成的链表。题目很简单,也没有什么难点。先遍历链表将元素顺序存入vector,之后在对vector进行操作实现逆序的vector。
最初自己想法是用第二个vector依次获取第一个vector队尾的元素,但在查询vector资料时发现reverse()实现的容器翻转代码特别优雅,在此特地贴出分享:

vector<int>::iterator first = array.begin();
vector<int>::iterator last = array.end();
while ((first != last) && (first != --last)) {
    iter_swap(first, last);
    ++first;
}

具体代码

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        // 将链表值存入容器
        vector<int> array;
        while (head != NULL) {
            array.push_back(head->val);
            head = head->next;
        }
        // 反转容器
        vector<int>::iterator first = array.begin();
        vector<int>::iterator last = array.end();
        while ((first != last) && (first != --last)) {
            iter_swap(first, last);
            ++first;
        }
        return array;
    }
};
posted @ 2019-02-27 17:00  Bylight  阅读(229)  评论(0编辑  收藏  举报