zoukankan      html  css  js  c++  java
  • 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));
    	}
    
    }
    

      

  • 相关阅读:
    REVERSE-Daily(4)-Elfcrackme2
    DES带IV向量加密解密工具
    Reverse-Daily(3)-DotNetCrackMe1
    Reverse-Daily(2)-wow
    C#:using和new关键字
    python3实现UDP协议的简单服务器和客户端
    python3实现TCP协议的简单服务器和客户端
    深入C++的运算符重载
    NLTK学习笔记(五):分类和标注词汇
    NLTK学习笔记(四):自然语言处理的一些算法研究
  • 原文地址:https://www.cnblogs.com/kexiblog/p/10842485.html
Copyright © 2011-2022 走看看