博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

。。。剑指Offer之——从尾到头打印链表。。。

 1 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
 2 //        定义一个ArrayList,用来存放翻转链表结果
 3         ArrayList<Integer> list = new ArrayList<>();
 4         if (listNode == null) {
 5             return list;
 6         }
 7         ListNode p = listNode;//p指向头指针
 8 //        1、每次迭代一个p,就把p的数值加入到list当中
 9 //        2、循环结束的时候,list里面存放的内容是链表的顺序排列
10         while (p != null) {
11             list.add(p.val);
12             p = p.next;
13         }
14         int length = list.size();
15 //        用i指向list的最前面,用j指向list的最后面
16         int i = 0, j = length - 1;
17 //        1、将i指向的内容与j指向的内容进行交换
18 //        2、循环结束之后,list里面的内容就翻转过来了
19         while (i < j) {
20             int temp = list.get(i);
21             list.set(i, list.get(j));
22             list.set(j, temp);
23             i++;
24             j--;
25         }
26 //        返回最终结果,list里面的内容已经翻转过来了
27         return list;
28     }


1 public class ListNode {
2     int val;
3     ListNode next = null;
4 
5     ListNode(int val) {
6         this.val = val;
7     }
8 }

 

 

 

posted @ 2019-04-25 11:39  影梦  阅读(110)  评论(0编辑  收藏  举报