从尾到头打印链表

来源:互联网 发布:阿里云linux服务器搭建 编辑:程序博客网 时间:2024/06/05 13:30


这是剑指offer上面试题6: 题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。


解法一:通过先顺序遍历链表,依次如栈,栈是先进后出的数据结构。

package com.nowcoder.wenda.arithmetic;import java.util.ArrayList;import java.util.Stack;/** * Created by wuyunlong on 17-11-28. */public class DeleteNode {    public static  void  main(String[] args){        ListNode head = new ListNode(2);        ListNode node1 = new ListNode(3);        ListNode node2 = new ListNode(7);        ListNode node3 = new ListNode(13);        ListNode node4 = new ListNode(12);        head.next=node1;        node1.next = node2;        node2.next = node3;        node3.next = node4;        deleteNode(head);    }    public static void deleteNode(ListNode node) {        // write your code here        ListNode nodee = null;        //定义一个栈        Stack<ListNode> stack = new Stack<ListNode>();        while(node!=null){            stack.push(node);            node = node.next;        }        while(!stack.empty()){            System.out.println(stack.pop().val);        }    }}


解法二:上面既然用到了栈来实现,其实递归本质上就是一个栈结构。

public static void deleteNode1(ListNode node) {        // write your code here        if(node == null){            return ;        }else{            deleteNode1(node.next);            System.out.println(node.val);        }    }