剑指offer(3):从尾到头打印单链表

输入一个链表,从尾到头打印链表每个节点的值。

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL)
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> inverse;
        stack<int> node_values;

        ListNode * pNode = head;
        while(pNode != nullptr)
        {
            node_values.push(pNode->val);
            pNode = pNode->next;
        }

        while(!node_values.empty())
        {
            inverse.push_back(node_values.top());
            node_values.pop();
        }
        return inverse;

    }
};

原文地址:https://www.cnblogs.com/heifengli/p/8886346.html

时间: 2024-10-02 00:32:41

剑指offer(3):从尾到头打印单链表的相关文章

剑指offer(6)——从尾到头打印链表

输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 思路分析: 方法一:利用栈的先进后出思想实现,加上判断条件后17ms,刚开始24ms class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { // 1.判断链表为空或为1 // 判断链表为空的情况 if (listNode == null) { return new ArrayList<Integer>

剑指offer系列——从尾到头打印链表

Q:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. C:时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M T: 1.我直接用的reverse函数.这道题需要注意的,就是链表为空的情况.不过--应该<数据结构>里经常提到了. # include <algorithm> vector<int> printListFromTailToHead(ListNode* head) { vector<int> Array

剑指Offer之从尾到头打印链表

这题有两种思考方式,一种是添加辅助空间,先进后出,当然是栈了,做法就是遍历链表,将值压入栈中,然后再一次弹出.还有一种方法是链表反序,链表反序也有两种方法.一种是将链表在原有的基础上更改指针,进行反序.光看代码可能不太还理解,我们可以看一下执行过程. 假设p1->p2->p3->p4->p5->p5->.......那么执行一次为p1<-p2->p3->p4->p5.......然后p1=p2;p2=p3;将其更新为新的p1->p2->

【剑指offer】从尾到头打印链表

我的思路:先翻转链表,再打印. 网上思路:利用栈的后进先出性质:或者用递归,本质也是栈. 我的代码: #include <vector> using namespace std; struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { public: vector<int> printListFromTailToHead

牛客网-《剑指offer》-从尾到头打印链表

C++ 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * ListNode(int x) : 6 * val(x), next(NULL) { 7 * } 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<int> printListFromTailToHead(struct ListNode* head) { 13 vector<int&

面试题5:JS实现从尾到头打印单链表

单链表,在内存中所占地址是不连续的.所以遍历单链表时:需要从头遍历.而题目要求输出的顺序:从尾到头.也就是说第一个遍历到的节点最后一个输出,而最后一个遍历到的节点第一个输出.这就是典型的“后进先出”,我们可以用栈来实现这种顺序. 例题一共包含四个文件.运行程序前提:项目安装了nodejs 1.stack_list.js:实现了一个普通的栈. /** * Created by ym-Wang on 2016/8/16. */ function Stack(){ this.top = null; t

剑指offer——03从尾至头打印列表(Python3)

思路:相当于数据结构中的链表就地逆置,可以使用头插法来实现. 代码: class Solution:     # 返回从尾部到头部的列表值序列,例如[1,2,3]     def printListFromTailToHead(self, listNode):         # write code here         l = []         head = listNode         while head:             l.insert(0, head.val)

剑指offer——合并两个排序的链表

题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 代码实现(Java) 方案一:递归方法 1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode Merge(ListNode

【剑指offer】合并两有序单链表

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25739727 九度OJ上AC,採用归并的思想递归实现. 题目描写叙述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们须要合成后的链表满足单调不减规则.(hint: 请务必使用链表.) 输入: 输入可能包括多个測试例子,输入以EOF结束.对于每一个測试案例,输入的第一行为两个整数n和m(0<=n<=1000, 0<=m<=1000):n代表将要输入的第一个链表的