首頁  >  文章  >  Java  >  Java實作從頭到尾列印鍊錶的實例分析

Java實作從頭到尾列印鍊錶的實例分析

黄舟
黄舟原創
2017-10-16 09:51:591319瀏覽

這篇文章主要介紹了Java程式實作從頭到尾列印鍊錶程式碼實例,小編覺得挺不錯的,這裡分享給大家,供需要的朋友參考。

問題描述:輸入一個鍊錶的頭結點,從尾巴到頭反過來印出每個結點的值。

首先定義鍊錶結點


public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val){
      this.val = val;
    }
  }

思路1:此題明顯想到是利用堆疊的思想,後進先出,先遍歷鍊錶,依序將結點值進棧。最後在遍歷棧出棧。


public static Stack<Integer> printListReverse_Stack(ListNode listNode){
    Stack<Integer> stack = new Stack<Integer>();
    if(listNode != null){
      ListNode p = listNode;
      while(p != null){
        stack.add(p.val);
        p = p.next;
      }
    }
    return stack;
  }

想法2:直接遍歷鍊錶,依照頭插法依序插入ArrayList即可



########################################################################################################################################################################################### ###
public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    int add = 0;
    ListNode p = listNode;
    while(p != null){
      print.add(0, p.val);
      p = p.next;
    }
    return print;
  }
######思路3:可以使用遞迴的想法(本質也是堆疊的想法)###############
public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    print.addAll(printListReversely_Recursively(listNode.next));
    print.add(listNode.val);
    return print;
  }
######來總結## ####

以上是Java實作從頭到尾列印鍊錶的實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn