Q5:从尾到头打印链表

来源:互联网 发布:黑魂3 黑暗剑数据 编辑:程序博客网 时间:2024/06/06 19:23

importjava.util.Stack;

public class Q5 {

   /**

    * 题目:从尾到头打印链表

    * 题目说明:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

    * 解题思路:要想从尾到头打印链表,方法一:使用递归来实现;方法二:采用堆栈实现。在本质上递归就是一个栈结构。

    */

   public static void main(String[] args) {

      // TODOAuto-generated method stub

      ListNode node1=new ListNode();

      ListNode node2=new ListNode();

      ListNode node3=new ListNode();

      node1.data=1;

      node2.data=2;

      node3.data=3;

      node1.next=node2;

      node2.next=node3;

      Q5 test=new Q5();

      test.printListReverse1(node1);

      test.printListReverse2(node1);

   }

   //采用栈结构实现反向打印链表

   public static void printListReverse1(ListNode headNode){

      Stack<ListNode> stack=new Stack<ListNode>();

      //循环将链表元素压入栈中

      while(headNode!=null){

         stack.push(headNode);

         headNode=headNode.next;

      }

      //只要栈不为空则将其打印输出栈顶data的值

      while(!stack.isEmpty()){

         System.out.println(stack.pop().data);

      }

   }

   //采用递归方式实现反向打印链表

   public static void printListReverse2(ListNode headNode){

      if(headNode!=null){

         //只要链表结点的的next不为空则递归执行

         if(headNode.next!=null){

            printListReverse2(headNode.next);

         }

      }

      System.out.println(headNode.data);

   }

}

0 0
原创粉丝点击