package aim_at_offer;
import java.util.*;
public class No3 {
public static void main(String[] args){
//利用构造方法创建链表
ListNode list1=new ListNode(1);
ListNode list2=new ListNode(2);
ListNode list3=new ListNode(3);
list1.next=list2;
list2.next=list3;
//对于链表只要给出第一个值即可按顺序查找,所以传入的参数只给第一个值
printListFromTailToHead(list1);
}
//在这里题目用的是ArrayList,经过测试ArrayList是可以的,ArrayList和LinkedList都实现了List接口
//他们都是接口的实现类,前一个是数组实现的,后一个是链表实现的。只有这个不同
//数组查询快,但是插入删除慢
//链表相反
public static LinkedList<Integer> printListFromTailToHead(ListNode listNode) {
//创建两个集合一个把传进来的链表存起来,另一个实现逆序。
LinkedList<Integer> list = new LinkedList<Integer>();
LinkedList<Integer> result = new LinkedList<Integer>();
while(listNode.next!=null){
list.add(listNode.val);
}
for(int i=list.size()-1;i>=0;i--){
result.add(list.get(i));
}
System.out.println(result);
return result;
}
}
//创建一个链表的类,有两个属性,一个是存放值,一个是指向下一个值,利用构造方法既可以创建一个链表,
//一个链表只要给出了第一个值,那么就可以按顺序查找下一个。
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
第三题:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
最新推荐文章于 2023-05-02 13:38:34 发布