首页 > 试题广场 > 从尾到头打印链表
[编程题]从尾到头打印链表
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

19个回答

添加回答
推荐
方法一:链表从尾到头输出,利
   查看全部
编辑于 2015-06-18 16:53:34 回复(51)
我大前端很好用啊,上unshift就OK啦
/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/

function printListFromTailToHead(head)
{
    var arr = [];
    // write code here
    while(head != null){
        arr.unshift(head.val);
        head = head.next;
    }
    return arr;
}

发表于 2018-10-11 22:41:19 回复(0)
/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function printListFromTailToHead(head)
{
    var arr = [];
    while(head!=null){
        arr.push(head.val);
        head = head.next;
    }
    return arr.reverse();
}
实现代码为上面所示
思路:将链表中所有的值放入一个数组中,运用reverse函数将数组内元素逆序输出即可。
是不是很简单,简洁??不过还是要多想想这些函数是怎么实现的。
发表于 2018-10-10 09:33:14 回复(0)
JS的写法。。。。
function printListFromTailToHead(head)
{
    var arr=[];    
    while(head!=null){
        arr.unshift(head.val);
        head=head.next;
    }
    return arr;
}

发表于 2018-08-28 18:50:35 回复(0)
JS实现
思路:
1、将链表内容存入数组
2、用reverse将数组反转

/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
// write code here
if(!head){return 0;}
var arr = [];
while(head!=null){
arr.push(head.val);
head = head.next;
}
arr = arr.reverse();
return arr;
}
Java实现
思路:
思路:
1、将链表的内容存入栈
2、将栈的内容存入链表。栈是后进先出,相当于将链表的内容倒序了。
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;
}
}
编辑于 2018-07-17 16:49:13 回复(0)
Javascript有现成的函数unshift,自底向上排列数组,相当的简洁
function printListFromTailToHead(head)
{
    // write code here
    var result = [];
    while (head) {
        result.unshift(head.val);
        head = head.next;
    }
    return result;
}

发表于 2018-06-12 22:58:59 回复(0)
1)、push方法
function printListFromTailToHead(head)
{
    // write code here
    var arr=[];
    while(head!=null){
        arr.push(head.val);
        head=head.next;
    }
    return arr.reverse();
}
2)、unshift方法
function printListFromTailToHead(head)
{
    // write code here
    var arr=[];
    while(head!=null){
        arr.unshift(head.val);
        head=head.next;
    }
    return arr;
}
发表于 2018-05-27 13:43:12 回复(0)
js 
1.如果可以在外部定义变量,
const res = [];
function printListFromTailToHead(head)
{ // write code here    if(head) {
        head = head.next;  printListFromTailToHead(head);  res.push (head.val);
    }  return res;
};
2. 常规做法,但是 unshift 这个函数是往头部加一个元素,相当于每次都会把之前的数据往后挪,时间复杂度不看好;
function printListFromTailToHead(head){ // write code here    const res = [];  while(head) {  res.unshift (head.val);
        head = head.next;
    }  return res;
}



发表于 2018-05-07 12:56:00 回复(0)
function printListFromTailToHead(head)
{
    var res = [], p = head;
    while(p){
        res.unshift(p.val);
        p = p.next;
    }
    return res;         // 输出一个打印顺序list
}

编辑于 2018-04-21 09:56:33 回复(0)

JavaScript 版,用的反转链表,我是看了别人才发现结果要返回一个数组之类的。。。

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function printListFromTailToHead(head)
{   
    // 反转链表
    let pre = null;
    let next = null;
    while (head !== null) {
        next = head.next;
        head.next = pre;
        pre = head;
        head = next;
    }

    head = pre;
    let arr = [];
    while (head !== null) {
        arr.push(head.val);
        head = head.next;
    }
    return arr;
}
编辑于 2018-01-31 23:40:44 回复(0)
啊, Javascript 没人权啦
/*function ListNode(x) {
    this.val = x;
    this.next = null;
}*/
function printListFromTailToHead(head) {
    // write code here
    var res = [], pNode = head;
    while (pNode != null) {
        res.unshift(pNode.val);
        pNode = pNode.next;
    }
    return res;
}
编辑于 2017-09-20 12:29:04 回复(9)
function printListFromTailToHead(head)
{
    let result = [];
    let node = head;
    while(true) {
        if(node !== null) {
            result.unshift(node.val);
            node = node.next;
        } else {
            return result;
        }
    }
}

发表于 2017-09-13 09:56:07 回复(0)

来个javascript的

function printListFromTailToHead(head)
{
    var list = [],p = head;
    while(p!==null){
        list.unshift(p.val)
        p = p.next;
    }
    return list;
}
发表于 2017-08-17 15:05:38 回复(0)
原生JS实现
要求从尾到头来输出,可以先按照遍历的顺序将这些值记录下来,分别push到一个数组里,最后将
数组反转输出就可以了
function printListFromTailToHead(head)
{
    // write code here
    var resArr = [];
    var Arr = [];
    while(head != null)
    {
        Arr.push(head.val);        
        head = head.next;
    }
    resArr = Arr.reverse();
    return resArr;
}

发表于 2017-05-26 10:22:13 回复(0)

上面的回答基本都是用java或者c实现的,是欺负我javascript没人吗?
这道题实现起来比较简单,就是链表的逆序打印。

/*function ListNode(x){
    this.val = x;        // 节点的数据域
    this.next = null;    // 节点指针域,通过this.next使指针后移
}*/
function printListFromTailToHead(head)
{
    var arr = [];    // 创建一个空数组,将每个节点存放哎数组中
    if(!head) {        // 判断链表是否为空
        return arr;
    }
    while(head) {
        arr.unshift(head.val);    // 使用unshift()方法,将当前节点放到数组的开头
        head = head.next;    // 指针后移
    }

    return arr;    
}
发表于 2017-05-25 23:03:00 回复(2)
function printListFromTailToHead(head)
{
    var arr=[];
    while(head!=null){
        arr.unshift(head.val);
        head=head.next;
    }
    return arr;
}
module.exports = {
    printListFromTailToHead : printListFromTailToHead
};

发表于 2017-03-28 20:45:15 回复(0)
先把每一个节点的值读入到一个数组,然后转置数组即可。
function printListFromTailToHead(head)
{
    // write code here
    var arr = [];
    while(head !== null){
        arr.push(head.val);
        head = head.next;
    }
    return arr.reverse();
}

发表于 2017-03-17 22:03:23 回复(0)
这个题真的应该认真审题,题目说的是从尾到头打印,但是感觉这个说明真的不行,我写了半天不能通过,后来一看,居然是把所有节点放到一个数组里面,然后return出来,excuse me?求说清楚好吗?
发表于 2017-03-13 19:16:48 回复(0)
function printListFromTailToHead(head)
{ //使用concat数组方法把递归结果(数组)与head.val连结起来,组成新的数组
  return head?printListFromTailToHead(head.next).concat(head.val||''):[];
}

编辑于 2017-03-01 17:21:16 回复(0)
javascript 代码如下:
function printListFromTailToHead(head)
{
    var arr=[];
    while(head){
        arr.push(head.val);
        head = head.next;
    }
    return arr.reverse();
}
module.exports = {
    printListFromTailToHead : printListFromTailToHead
};
发表于 2016-12-14 14:29:39 回复(0)

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号