剑指offer第三题 从尾到头打印链表

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

解题思路:先入栈相当于链表逆序再出栈实现链表从尾到头的顺序输出。

 1 /**
 2 *    public class ListNode {
 3 *        int val;
 4 *        ListNode next = null;
 5 *
 6 *        ListNode(int val) {
 7 *            this.val = val;
 8 *        }
 9 *    }
10 *
11 */
12 import java.util.*;
13 public class Solution {
14     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
15         if(listNode == null){
16             return new ArrayList();
17         }else{
18             ArrayList<Integer> arr = new ArrayList<Integer>();
19             Stack<Integer> ss = new Stack<Integer>();
20             while(listNode!=null){
21                 ss.push(Integer.valueOf(listNode.val));
22                 listNode = listNode.next;
23             }
24             while(!ss.empty()){
25                 arr.add(ss.pop());
26             }
27             return arr;
28         }
29     }
30 }

注意:new ArrayList()与 NULL 不相等

  ArrayList源码中默认初始的容量为10
  private static final int DEFAULT_CAPACITY = 10;

ps:源码很重要。。。还是要加油!!!

原文地址:https://www.cnblogs.com/haq123/p/12094365.html

时间: 2024-10-07 20:13:17

剑指offer第三题 从尾到头打印链表的相关文章

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

可以练习下链表的逆置. def PrintListReversingly(head): if head == None: return if head: PrintListReversingly(head.next) print head.val def reverse(head): if head == None or head.next == None: return head psuhead = ListNode(-1) while head: nexthead = head.next h

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

ob地址 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1 #include<iostream> #include<stdio.h&g

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

题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题代码: /*function ListNode(x){ this.val = x; this.next = null; }*/ function printListFromTailToHead(head) { // write code here var arr = []; if(head == null){ return arr; } while(head != null){ arr.push(head.val)

【剑指offer】替换空格从尾到头打印链表

题目链接 [题目描述] 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. [解题思路] 将链表的元素压入栈中(因为栈是先进后出的),然后再把栈中的元素放入vector即实现了倒序. [代码] 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 Solu

剑指offer 面试题6.从尾到头打印链表

0.题目描述 输入一个链表的头结点,从尾到头反过来打印出每个节点的值. 1.解法 用栈即可. ? ? class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { stack<ListNode*> step; vector<int> ans; ListNode* p = head; while(p){ step.push(p); p = p -> next; } whi

剑指Offers 题目1511:从尾到头打印链表

题目1511:从尾到头打印链表 题解报告:方法一.链表创建,头插法,方法二.运用栈,注意栈可能溢出~! #include <iostream> #include <stack> #include <cstdio> using namespace std; // stack int main() { int num; stack<int> List; while(scanf("%d", &num) && num !=

《剑指offer》第五题(重要!从尾到头打印链表)

文件main.cpp // 从尾到头打印链表 // 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. #include <iostream> #include <stack> #include "List.h" using namespace std; void PrintListReversingly_Iteratively(ListNode* pHead)//解法一:使用栈 { stack<ListNode*> nodes;//定义

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

题目描述: “输入一个链表,从尾到头打印链表每个节点的值.” 这是我做的<剑指offer>系列的第一题,好的开头就是成功的一半.然而,我提交了一次,WA!再提交,WA!Com'on! 看来我的开端并不顺利.不过我要的可不是成功的一半,这样的开端怎么能阻挡我AC之路!仔细看了一遍题目要求,看了提交格式.再提交! Finally,AC! 代码如下: 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * Lis

LeetCode | 面试题06. 从尾到头打印链表【剑指Offer】【Python】

LeetCode 面试题06. 从尾到头打印链表[剑指Offer][Easy][Python][链表] 问题 力扣 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 思路 解法一 reverse函数 时间复杂度: O(n),n为 head 链表长度. 空间复杂度: O(n),n为 head 链表长度. Python3代码 # Definition for si