剑指Offer06.从尾到头打印链表 C++

1、题目描述

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]

2、VS2019上运行

#include
using namespace std;
#include
//定义单链表
struct ListNode {
	int val;//表示节点的值
	ListNode* next;//指向下一个节点的指针
	//结构体中的构造函数定义;该构造函数接受一个整型参数,用于初始化节点的值。
	//在构造函数的定义中,通过冒号初始化列表的方式对成员变量进行初始化
	ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
	vector<int>reversePrint(ListNode* head) {
        //临时向量temp用于存储正向顺序的链表节点值,答案向量ans用于存储逆序的链表节点值
        vector<int> temp, ans;
        //创建指针p,指向链表头节点
        ListNode* p = head;
        //temp存放正向的
        while (p)
        {
            temp.push_back(p->val);//将当前节点的值存储在临时向量中
            p = p->next;//移动到下一个节点
        }
        for (int i = temp.size() - 1; i >= 0; i--)
        {
            ans.push_back(temp[i]);//将临时向量中的值从后往前依次存储在答案向量中,实现逆序
        }
        return ans;
	}
};
int main() {
    // 创建一个简单的链表
    ListNode* head = new ListNode(1);
    ListNode* second = new ListNode(2);
    ListNode* third = new ListNode(3);
   
    head->next = second;
    second->next = third;

    Solution solution;
    vector<int> result = solution.reversePrint(head);
    // 打印结果数组
    for (int num : result) {
        cout << num << " ";
    }
    cout << endl;

}

运行结果
3 2 1

3、vector中常用的容器函数

vector 容器是 C++ 标准库中的一个动态数组容器,提供了多个函数用于操作和管理其中的元素。下面是一些常用的 vector 容器函数:
1、元素访问:
operator[]:通过索引访问容器中的元素。
at:通过索引访问容器中的元素,提供越界检查。
front:返回容器的第一个元素的引用。
back:返回容器的最后一个元素的引用。
data:返回指向容器底层数据的指针。
2、迭代器:
begin:返回指向容器首元素的迭代器。
end:返回指向容器尾元素的下一个位置的迭代器。
rbegin:返回指向容器尾元素的反向迭代器。
rend:返回指向容器首元素前一个位置的反向迭代器。
3、容量管理:
size:返回容器中元素的数量。
empty:检查容器是否为空。
resize:改变容器的大小。
capacity:返回容器当前可容纳的元素数量。
reserve:增加容器的容量以容纳指定数量的元素。
4、添加和删除元素:
push_back:在容器尾部添加一个元素。
pop_back:移除容器中的最后一个元素。
insert:在指定位置插入一个或多个元素。
erase:从指定位置或指定范围内删除一个或多个元素。
clear:移除容器中的所有元素。
5、其他操作:
assign:将容器的内容更改为新的指定值或指定范围的值。
swap:交换两个容器的内容。
emplace:在指定位置构造一个元素。
emplace_back:在容器尾部构造一个元素。

你可能感兴趣的:(剑指Offer刷题,链表,c++,数据结构)