火车头 车厢1 车厢2
public class Solution {
private String data;
private Solution next;
public Solution(String data) {
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Solution getNext() {
return next;
}
public void setNext(Solution next) {
this.next = next;
}
public static void main(String[] args) {
//初始化链表
Solution l0 = new Solution("火车头");
Solution l1 = new Solution("车厢1");
Solution l2 = new Solution("车厢2");
//设置指针
l0.setNext(l1);
l1.setNext(l2);
//读取链表数据
Solution data = l0;
while (data!=null){
System.out.println(data.getData());
data = data.getNext();
}
}
}
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
listNode 是链表,只能从头遍历到尾,但是输出却要求从尾到头,这是典型的"先进后出",我们可以想到栈! ArrayList 中有个方法是 add(index,value),可以指定 index 位置插入 value 值 所以我们在遍历 listNode 的同时将每个遇到的值插入到 list 的 0 位置,最后输出 listNode 即可得到逆序链表
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arlist = new ArrayList<>();
ListNode ln = listNode;
while(ln != null){
arlist.add(0,ln.val);
ln = ln.next;
}
return arlist;
}
}
时间复杂度:O(n)O(n) 空间复杂度:O(n)O(n)