剑指offer 从尾到头打印链表
程序员文章站
2022-05-06 10:08:09
...
题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList
。
由于题目给定的是单链表,所以无法从尾端 --> 起始端
访问。
但是我们可以借助栈实现元素的逆序输出,栈的特性是先进后出
,第一步,我们访问一遍链表,将所有元素依次进栈。最后再将栈中的元素依次出栈,得到的逆序的链表节点元素。
还有一种思路,就是获取到正向的序列后,直接进行翻转。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) :
* val(x), next(NULL) {
* }
* };
*/
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
//辅助栈,用于逆序输出链表中的元素
stack<int> myStack;
vector<int> resVec;
//一遍遍历链表,将所有元素依次进栈
while(head){
myStack.push(head->val);
head = head->next;
}
//栈中的元素依次出现,得到的即是链表的逆序
while(!myStack.empty()){
resVec.push_back(myStack.top());
myStack.pop();
}
return resVec;
}
};
题1、剑指offer 二维数组中的查找
题2、剑指offer 替换空格
上一篇: C#的引用类型 和 值类型
下一篇: 剑指offer---从尾到头打印链表