链表从尾到头输出

将一个链表从尾到头输出。

使用了栈。

 1 package OnlineTest;
 2
 3 /*
 4  * 一个链表,从尾到头打印链表每个节点的值。
 5  * */
 6
 7 import java.util.Stack;
 8
 9 class Link{
10     class Node{
11         private int data;
12         private Node next;
13         public Node(int data){
14             this.data = data;
15         }
16         public void addNode(Node newNode){
17             if(this.next == null){
18                 this.next = newNode;
19             }else{
20                 this.next.addNode(newNode);
21             }
22         }
23         public void printNode(){
24             sta.push(this.data);
25             if(this.next != null){
26                 this.next.printNode();
27             }
28         }
29     }
30     Stack sta = new Stack();
31     Node root;
32     public void add(int data){
33         Node newNode = new Node(data);
34         if(this.root == null){
35             this.root = newNode;
36         }else{
37             this.root.addNode(newNode);
38         }
39     }
40     public void Print(){
41         this.root.printNode();
42         while(!(sta.empty())){
43             System.out.println(sta.pop());
44         }
45     }
46 }
47
48 public class LianBiaoFromTailToHead {
49
50     public static void main(String[] args) {
51         Link l = new Link();
52         l.add(0);
53         l.add(1);
54         l.add(2);
55         l.add(3);
56         l.add(4);
57         l.add(5);
58         l.Print();
59
60     }
61 }
时间: 2024-10-06 03:59:06

链表从尾到头输出的相关文章

从尾到头输出链表

链表的结构为: struct ListNode { int m_nKey; ListNode* next; }; 从头到尾的输出链表对于大家来说都是比较简单的,但是从尾到头应该怎么做好呢? 其实可以这样想,从头到尾输出链表,并把链表的数据存放到栈中,当遍历到链表尾部的时候,再从栈中输出数据,此时得到的值就是从尾到头输出的值了, 但是在这样的实现中,需要额外去维护一个栈,也是挺麻烦的,这时你可以想一下,栈的实现其实和递归的实现时一样的,那么可不可以不要用栈,而是使用递归实现呢 这样的话更容易理解也

【编程题目】从尾到头输出链表(链表)☆

58.从尾到头输出链表(链表).题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值.链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;}; 我的思路:用一个数组存起来已有的数字,再反过来输出.缺点是数组大小是确定的 链表长度不能超过数组的大小 /* 58.从尾到头输出链表(链表). 题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值.链表结点定义如下: struct ListNode { int m_nKey; ListN

第五十八题(从尾到头输出链表)

58.从尾到头输出链表. 题目:输入一个链表的头结点,从尾到头反过来输出每一个结点的值. 思路:题不难,提供几种思路 1.使用栈的先进后出特性实现,遍历链表元素依次入栈,再出栈就可以达到目的 2.使用数组先暂存顺序遍历的结果,再对数组反向遍历就可以. 3.递归,也就是这里採用的方法. C++代码: #include "stdafx.h" #include<ctime> #include<iostream> namespace MS100P_58 { void r

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

题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路:利用栈先进后出的原理,依次把ArrayList的值入栈,再出栈即可逆序 import java.util.ArrayList;import java.util.List;import java.util.Stack; public class PrintListFromTailToHead { public class ListNode { int val; ListNode next = null; List

编程练习 输入一个链表 从尾到头打印节点值

两种方法 1,利用栈的方法实现 将节点里的值按顺序push压入到栈中 再将pop出栈的值按顺序赋值到节点里 2.原链表头节点删除 再 头插入到一个新的链表里 实现反转 1 #!/usr/bin/env python3 2 3 class Stack(object): 4 def __init__(self): 5 self._elems = [] 6 7 def is_empty(self): 8 return self._elems == [] 9 10 def push(self, elem

剑指offer——从尾到头打印链表节点的值

输入一个链表,从尾到头打印链表每个节点的值. 输入描述:输入为链表的表头 输出描述:输出为需要打印的“新链表”的表头 一.问题分析 初拿到这个题目时,这应该是考察单向链表这一数据结构.单向链表的遍历总是从头指针逐项遍历各个节点,现在要求从尾到头打印节点的值,我们可以在遍历时把各节点压入栈内,最后出栈打印各个节点值,即可达到要求. 实现之前,我们先来看看如何创建一个链表. 1,链表节点的数据结构定义 1 struct ListNode { 2 int val; 3 struct ListNode

2.3从尾到头输出单链表每个结点的值

这个可以用栈来实现,遍历单链表,将数值存到栈上,遍历完之后,再输出栈中的数据 能用栈解决,就可以联想到使用递归来解决了,每当访问一个结点,先递归输出他后面的结点,然后再输出本身,这样链表就反向输出了. //从尾到头输出结点说的值 #include <iostream> #include<stdio.h> #include<string.h> using namespace std; typedef struct LNode { int data; struct LNod

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

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题目链接 思路 遍历链表,把结构保存在list里面,然后把list逆序输出 代码 1 # -*- coding:utf-8 -*- 2 # class ListNode: 3 # def __init__(self, x): 4 # self.val = x 5 # self.next = None 6 7 class Solution: 8 # 返回从尾部到头部的列表值序列,例如[1,2,3] 9 def printLi

剑指Offer-3.从尾到头打印链表(C++/Java)

题目: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 分析: 很简单的一道题,其实也就是从尾到头打印链表,题目要求返回ArrayList,其实也就是一个数组. 可以将链表中的元素全部压入栈中,再从栈中依次弹出元素,就可以得到倒序的链表输出. 当然也可以直接将链表中元素传入数组中,最后再翻转数组即可. 程序: C++ //use stack class Solution { public: vector<int> printListFromTailToHead(ListNode