本文以单链表为例进行说明
链表中的数据是以结点来表示的,每个结点的构成:元素 + 指针,元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
单链表是由自身元素和指向下一个结点的指针构成。
分析:
假设该单链表中有两个结点A和B
A结点自身值为4,指向下一个结点B
B为最后一个结点,自身值为6,指针为null.
代码如下:
import java.util.ArrayList;
public class Solution3 {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> result = new ArrayList<Integer>(); //反转之后的集合
ListNode tmp = listNode;
while(tmp != null){
int num = tmp.val;
list.add(num);
tmp = tmp.next;
}
for(int i = list.size() - 1;i >= 0;i--){
result.add(list.get(i));
}
return result;
}
public static void main(String[] args) {
Solution3 s = new Solution3();
ListNode listNode = new ListNode(); //创建一个新的结点A
listNode.val = 4; //该结点值为4
listNode.next = new ListNode(); //创建下一个新的结点B
listNode.next.val = 6; //下一个结点的值为6
listNode.next.next = null; //下一个结点的引用为空
ArrayList<Integer> list = s.printListFromTailToHead(listNode);
System.out.println(list);
}
}
运行结果为:
[6, 4]