N3-按链表值从尾到头的顺序返回一个ArrayList。

题目描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

方法一:
*单链表就地逆置并按序放入数组中 单链表就地逆置
*将头结点后面指向null 依次遍历单链表再以头插法插入链表中
*方法二:
* 调用库函数 Arraylist 中add两个参数的方法

import java.util.ArrayList;
/**
 * 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
 * @author Sonya
 * 方法一:
 *单链表就地逆置并按序放入数组中 单链表就地逆置 
 *将头结点后面指向null 依次遍历单链表再以头插法插入链表中
 *方法二:
 * 调用库函数 Arraylist 中add两个参数的方法
 */
//节点定义
class ListNode {
        int val;
        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }


public class N3_Print_Linklist_2_Arraylist {
	//方法一
	    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
	    	if(listNode==null) {return new ArrayList();}
	    	ArrayList ar=new ArrayList();
	    	ListNode p=listNode.next;
	    	ListNode ln=new ListNode(0);
	    	ln.next=listNode;
	    	listNode.next=null;
	    	while(p.next!=null) {//头插法
	    		ListNode q=p.next;
	    		p.next=ln.next;
	    		ln.next=p;
	    		p=q;		
	    	}
	    	p.next=ln.next;
	    	ln.next=p;
	    	ListNode lr=ln.next;
	    	while(lr.next!=null) {
	    		ar.add(lr.val);
	    		lr=lr.next;
	    	}
	    	ar.add(lr.val);
			return ar;
	        
	    }
	    //方法二 调用库函数 Arraylist 中add两个参数的方法
	    public ArrayList<Integer> printListFromTailToHead2(ListNode listNode){
	    	
	    		 ArrayList<Integer> list = new ArrayList<Integer>();
	    		         
	    		        while(listNode != null){
	    		        	//list中直接有一个在指定位置插入 即直接使用头插法
	    		            list.add(0,listNode.val);
	    		            listNode = listNode.next;
	    		        }
	    		         
	    		        return list;
	    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ListNode listNode=new ListNode(1);
		ListNode L2=new ListNode(2);
		ListNode L3=new ListNode(3);
		ListNode L4=new ListNode(4);
		ListNode L5=new ListNode(5);
		listNode.next=L2;
		L2.next=L3;
		L3.next=L4;
		L4.next=L5;
		
		N3_Print_Linklist_2_Arraylist n3=new N3_Print_Linklist_2_Arraylist();
		
		System.out.println(n3.printListFromTailToHead(null));
		System.out.println(n3.printListFromTailToHead(listNode));
	}

}

  

猜你喜欢

转载自www.cnblogs.com/kexiblog/p/10842485.html