03 从尾到头打印链表

题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
因为最近练习过链表,所以直接想到了反转链表然后遍历插入ArrayList中,一次AC

class  Solution{
	static Node head = null;
	public Node{
		int data;
		Node next = null;
		Node(int data){
			this.data = data;
		}
	}

public void head_insert(int data){
	Node cur = Node(data);
	if(head == null){
		head = cur;
		return ;	
	} else{
		cur.next = head;
		head = cur;	
	}
}

public void print() {
		Node node = head;
		int size = get_length();
		while(size  >1) {
			System.out.print(node.data+"->");
			node = node.next;
			size --;
			if(size ==1) {
				System.out.print(node.data);
			}
		}
		System.out.println();
	}

public static void main(String[] args){
	head_insert(6);
	head_insert(5);
	head_insert(4);
	head_insert(3);
	head_insert(2);
	head_insert(1);
	print();
	printListFromTailToHead();
}

	public static void printListFromTailToHead() {
		 ArrayList<Integer> list = new ArrayList<>();
	        Node pRHead = null;
	        Node cur = head;
	        Node pre = null;
	        while(cur != null){
	            Node pnext = cur.next;
	            if(pnext == null){
	                pRHead = cur;
	            }
	            cur.next = pre;
	            pre = cur;
	            cur = pnext;
	        }
	       head = pRHead;
	        while(head != null){
	            list.add(head.data);
	            head = head.next;
	        }
	        for(int i : list) {
	        	System.out.println(i);
	        }
		}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值