从尾到头打印链表

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

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

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


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值