剑指offer-面试题05-从尾到头打印链表

package case05_ListNode;

import java.util.Stack;

public class ListNodeFromTailToHead {

	public static void main(String[] args) {
		ListNode1 listN1 = new ListNode1(1);
		ListNode1 listN2 = new ListNode1(2);
		ListNode1 listN3 = new ListNode1(3);
		ListNode1 listN4 = new ListNode1(4);
		ListNode1 listN5 = new ListNode1(5);
		ListNode1 listN6 = new ListNode1(6);
		ListNode1 listN7 = new ListNode1(7);
		listN1.next = listN2;
		listN2.next = listN3;
		listN3.next = listN4;
		listN4.next = listN5;
		listN5.next = listN6;
		listN6.next = listN7;
		listN7.next = null;
		System.out.println("//方法1:利用栈从尾到头打印链表");
		//方法1:利用栈从尾到头打印链表
		printFromHailToHead1(listN1);
		System.out.println();
		System.out.println("//方法2:利用递归方式");
		//方法2:利用递归方式
		printFromTailToHead2(listN1);
	}

	// 定义节点结构
	public static class ListNode1 {
		int val;
		public ListNode1(int val) {
			this.val = val;
		}
		ListNode1 next = null;
	}

	// 方法1:利用栈的方式实现。
	public static void printFromHailToHead1(ListNode1 list1) {
		Stack<Integer> stack1 = new Stack<>();
		if (list1 == null)
			return;
		//压入栈stack1里面
		while (list1 != null) {
			stack1.push(list1.val);
			list1 = list1.next;
		}
		//出栈
		while(!stack1.empty()){
			System.out.print(stack1.pop()+" ");
		}
	}
	//方法2:利用递归的方法实现
	public static void printFromTailToHead2(ListNode1 list2){
		if(list2 == null){
			return;
		}
		else{
			printFromTailToHead2(list2.next);
			System.out.print(list2.val + " ");
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值