欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer 从尾到头打印链表

程序员文章站 2022-05-06 10:08:09
...

题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList

\color{blue}解题思路:
由于题目给定的是单链表,所以无法从尾端 --> 起始端访问。
但是我们可以借助栈实现元素的逆序输出,栈的特性是先进后出,第一步,我们访问一遍链表,将所有元素依次进栈。最后再将栈中的元素依次出栈,得到的逆序的链表节点元素。

还有一种思路,就是获取到正向的序列后,直接进行翻转。

\color{blue}代码实现:

/**
*  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;
    }
};

剑指offer 从尾到头打印链表

\color{blue}题目推荐:
题1、剑指offer 二维数组中的查找
题2、剑指offer 替换空格

相关标签: 剑指offer