剑指offer三:从尾到头打印链表
生活随笔
收集整理的這篇文章主要介紹了
剑指offer三:从尾到头打印链表
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?題目描述
輸入一個(gè)鏈表,按鏈表值從尾到頭的順序返回一個(gè)ArrayList。
package com.jianzhioffer;import java.util.ArrayList; import java.util.Stack;public class ReverseList {public static void main(String[] args){ListNode l1 = new ListNode(1);ListNode l2 = new ListNode(2);ListNode l3 = new ListNode(3);ListNode l4 = new ListNode(4);ListNode l5 = new ListNode(5);l1.next = l2;l2.next = l3;l3.next = l4;l4.next = l5;ArrayList<Integer> list = printListFromTailToHead(l1);for(Integer i : list){System.out.println(i);}list = printListFromTailToHeadByStack(l1);for(Integer i : list){System.out.println(i);}}// 利用ArrayList的add方法public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> list = new ArrayList<Integer>();if(null == listNode)return list;ListNode temp = listNode;while(temp != null){list.add(0, temp.val);temp = temp.next;}return list;}// 利用Stackpublic static ArrayList<Integer> printListFromTailToHeadByStack(ListNode listNode) {ArrayList<Integer> list = new ArrayList<Integer>();if(null == listNode)return list;Stack<Integer> stack = new Stack<Integer>(); ListNode temp = listNode;while(temp != null){stack.push(temp.val);temp = temp.next;}while(!stack.isEmpty()){list.add(stack.pop());}return list;} }class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;} }?
?
?總結(jié): 這道題相對(duì)簡(jiǎn)單, 解決方法有很多, ?方法一: 利用ArrayList的add方法,循環(huán)鏈表,每次將鏈表的值加入到ArrayList的第一個(gè)位置,這樣就實(shí)現(xiàn)了將鏈表從尾到頭加入到ArrayList中。
? ?方法二: 利用Stack類, 循環(huán)鏈表,每次將鏈表的節(jié)點(diǎn)壓入到棧中,然后出棧,將出棧的值加入到ArrayList中。這樣也可以實(shí)現(xiàn)從尾到頭加入到ArrayList中。
? 方法三: 將鏈表反轉(zhuǎn),然后循環(huán)反轉(zhuǎn)后的鏈表,即可。
總結(jié)
以上是生活随笔為你收集整理的剑指offer三:从尾到头打印链表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剑指offer二:字符串中的空格替换
- 下一篇: Linux下Tomcat重新启动以及日志