剑指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;

}

while(!step.empty()){

ans.push_back(step.top() -> val);

step.pop();

}

return ans;

}

};

?
?

原文地址:https://www.cnblogs.com/Justdocument/p/12394707.html

时间: 2024-11-05 20:44:23

剑指offer 面试题6.从尾到头打印链表的相关文章

【剑指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第三题 从尾到头打印链表

输入一个链表,按链表从尾到头的顺序返回一个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 So

剑指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_编程题_从尾到头打印链表

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 创建链表相关,头插法和尾插法 关于头插法,可以next可以理解成前一个节点地址,插入顺序: 1.头节点传入,开始创建A数据,头节点的next指向A数据的内存地址,A节点的next替换成头节点的 2.头节点再传入,创建B数据,头节点的next又换成了指向B的内存地址,B节点的next替换头节点的A: 总结一下:插入时候,一直在头节点的上面插入数据,原来的数据被“顶”上去了: 头插法遍历的时候,头节点开始,一个一个往上遍历.这

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

面试题:从尾到头打印链表

题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 方法1:典型思路就是利用栈的后进先出 import java.util.Stack; import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<>