剑指offer刷题7 从尾到头打印链表

本文介绍了一种简单而巧妙的方法,利用vector容器从尾到头逆序输出链表元素。通过实例演示了如何在遍历链表的同时,运用vector的insert方法在头部插入元素,从而实现链表数据的逆序存储与输出。这种方法不仅节省了额外数组的空间,还简化了代码实现。

这道题连牛客网给的标签都是简单,一星,真的很简单,与其说知识点tag是链表,不如说是数组vector,我写代码全程只有十分钟,然后提交一次就ac了,第一次提交就通过了全部的测试的用例,虽然这道题简单,但还是有点小开心鸭

题目描述

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
要求:时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M

解题思路

遍历链表,读取结点中的数据,放到数组中,因为是倒序打印,本来我想的是设置两个数组,一个先顺序存放从链表中读出来的数据,然后倒序存入另一个数组中在返回这个数组,但这道题的容器是vector,vector可以在任意位置插入数据,就非常简单了
从链表中顺序读取数据后,倒序插入到vector中,即将在链表中的后继元素放到vector的前一个位置,循环就可以实现啦

关于vector的一些使用方法

  1. vector容器类型的定义
    vector<int> vector;,可以直接定义,不需要用new()方法
  2. vector在意位置插入数据 :vector.insert(pos,elem);,将元素elem放入到pos位置上
  3. vector在头部插入元素:vector.insert(vector.begin(),elem);,其中vector.begin()就是指向第一个元素的位置

虽然这是一道链表题,但我认为知识点在vector这里

源代码

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> vector;
        if(head!=NULL){
            ListNode* p=head;
            while(p!=NULL){
                vector.insert(vector.begin(),p->val);
                p=p->next;
            }
        }
        return vector;
    }
};

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值