概述
【剑指offer06】【C++】从尾到头遍历链表
- 题目
- 题解
题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
题解
笔记:
1.vector数组插入元素到首个位置:
v.insert(v.begin(),value);
//在第二个元素前插入新元素1
v.insert(v.begin()+2,1);
//删除单个元素,从0开始计数,删除第二个元素
v.erase(v.begin()+2);
//删除一段元素,删除迭代器第一到第五区间所有元素
v.erase(v.begin()+1,v.begin()+5); //删除的起始位置和删除的最后一个元素的下一个位置
2.什么时候用->,什么时候用. 需要清楚,ptr->val或者(*ptr).val;
对于a.b,
a一定是某个类的一个具体的对象(或对于这个对象的引用)。
对于a->b,
如果a是个指针,b就是指针a指向的对象的一个成员;
如果a是某个重载了操作符->的类的对象,那么被重载过的->()方法就会被调用
代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> v;
if (head != nullptr) {
//如果是(*head)则整体不是指针了,用“.”,或者head->val
v.insert(v.begin(), head->val);
ListNode* pnode = head;
while (pnode->next != nullptr) {
pnode = pnode->next;
v.insert(v.begin(), pnode->val);//或者用(*pnode).val
}
}
return v;
}
};
//方法2:reverse
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> res;
while (head) {
res.push_back(head->val);
head = head->next;
}
reverse(res.begin(), res.end());
return res;
}
};
最后
以上就是知性奇迹为你收集整理的【剑指offer06】【C++】从尾到头遍历链表题目题解的全部内容,希望文章能够帮你解决【剑指offer06】【C++】从尾到头遍历链表题目题解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复