从尾到头打印链表

原创 2016年08月28日 21:10:21

仅作为个人笔记

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


C++

递归

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(struct ListNode* head) {
        vector<int>dev;
        if(head != NULL)
        {
            if(head -> next != NULL)
            {
                dev = printListFromTailToHead(head -> next);
            }
            dev.push_back(head -> val);
        }
        return dev;
    }
};

Java

递归

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
public class Solution {
    ArrayList<Integer> list = new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {


        if(listNode != null)
        {
            this.printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}

利用栈

/**
*    public class Node {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
         Stack<Integer> stack = new Stack<>();
        while(listNode != null)
        {
            stack.push(listNode.val);
            listNode = listNode.next;
        }

        ArrayList<Integer> list = new ArrayList<>();
        while(!stack.isEmpty())
        {
            list.add(stack.pop());
        }

        return list;
    }
}

Python

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        # write code here
        l = []
        head = listNode
        while head:
            l.insert(0,head.val)
            head = head.next
        return l
版权声明:本文为博主原创文章,未经博主允许不得转载。

1511 从尾到头打印链表

  • 2014年10月24日 12:12
  • 410B
  • 下载

剑指Offer面试题5(Java版):从尾到头打印链表

题目:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。 看到这道题,很多人的第一反应是从头到尾输出将会比较简单,于是我们很自然的想到把链表中的节点的指针反转过来,改变链表的方向,然后就可以...

剑指offer--从尾到头打印链表

记录来自《剑指offer》的算法题目 链表应该是面试时被提及最频繁的数据结构,它的结构简单,由若干个结点连接成链状结构,其创建、插入结点、删除结点等操作都只需要20行左右的代码就能实现,其代码量比较...
  • lc013
  • lc013
  • 2016年12月09日 16:59
  • 357

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

本人对java语言更熟悉,所以剑指offer代码都是通过Java实现,且涉及的核心代码全部通过牛客网的测试用例检查,感谢牛客网为我检验程序提供了极大帮助!main函数是为了在自己运行程序时,运行结果更...

剑指Offer--005-从尾到头打印链表

链接 牛客OJ:从尾到头打印链表 九度OJ:http://ac.jobdu.com/problem.php?pid=1510 GitHub代码: 004-替换空格 C...
  • gatieme
  • gatieme
  • 2016年04月09日 21:32
  • 1296

剑指Offer----面试题五:从尾到头打印链表

前述: 链表的创建、结点的插入、结点的删除等操作都只需要20行左右的代码就能实现,其代码量比较适合面试。 链表问题:面试题5“从尾到头输出链表”、面试题13“在O(1)时间删除链表结点”、面试题15“...

从尾到头打印链表值

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

剑指offer-面试题05-从尾到头打印链表

package case05_ListNode; import java.util.Stack; public class ListNodeFromTailToHead { public st...

从尾到头打印链表

题目:创建一个链表,从尾到头打印链表。 三种方法:利用栈, 递归, 就地逆置...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从尾到头打印链表
举报原因:
原因补充:

(最多只允许输入30个字)