从尾到头打印链表

来源:互联网 发布:淘宝童装海报素材 编辑:程序博客网 时间:2024/05/21 12:44

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

由尾到头打印,那么考虑到是逆序打印,可以往栈或递归方面想。
在不能改变链表结构的时候,我们需要考虑用栈。
找到尾节点,最起码我们需要遍历一次链表,那么先遍历到的节点却是在后面打印,这满足一个“先进后出”或者“后进先出”的性质,这就是了。

所以考虑用栈来做这道题目即可


Link结构:

public class Link {    int value;    Link next;    public Link(int v) {      value =v;    }    public Link() {    }}
public class FrontToRear05 {     public void frontToRear(Link link){         Link current = link;         Stack<Link> stacks = new Stack<Link>();         //如果链表为空 则返回         if(current==null){             System.out.println("Link is empty");             return ;         }         //压入栈,直到链表为空         while(current!=null){             stacks.push(current);             current = current.next;         }          //出栈 直到栈为空         while(!stacks.isEmpty()){             System.out.println(stacks.pop().value+" ,");         }     }    public static void main(String[] args) {        FrontToRear05 f = new FrontToRear05();        //exm1        Link ll = new Link(1);        Link a = new Link(2);        Link b =new Link(3);        Link c = new Link(4);        ll.next=a;        a.next=b;        b.next=c;        f.frontToRear(ll);        //exm2        Link dd =null;        f.frontToRear(dd);    }}

Result:

4 ,3 ,2 ,1 ,Link is empty
0 0
原创粉丝点击