offer 06 從頭至尾打印鏈表

從頭至尾打印鏈表

image.png
image.png
鏈表ListNode
鏈表操做方法
一些節點,除了最後一個節點之外的每個節點都存儲着下一個節點的地址,依據這種方法依次鏈接, 構成一個鏈式結構。
image.pnghtml

class ListNode {        //類名 :Java類就是一種自定義的數據結構
    int val;            //數據 :節點數據 
    ListNode next;      //對象 :引用下一個節點對象。在Java中沒有指針的概念,Java中的引用和C語言的指針相似
}

方法一 倒序遍歷

  • 先把鏈表寫出來,而後倒着遍歷輸出
  • 須要知道鏈表的長度,因此給定int length = 0;
  • 首先判斷當前鏈表是否是空鏈表
  • 判斷當前節點是否爲null,若是不是則加1
  • while(cur.next != null){
        length++;
        cur = cur.next;
    }
  • 鏈表寫好以後倒敘讀取鏈表的數據 head.val 而後再head.next 移動頭節點的指針
    image.png數組

    方法二 棧 先進後出

    利用棧先進後出的特色數據結構

    Stack是棧類

  • 首先把這個鏈表定義爲一個新的棧對象
  • 而後定義一個臨時指針是頭部節點
  • 當這個臨時指針指向null的時候循環結束,若是不是null,則一直像棧裏push數據(入棧操做),本程序就是push了對象
  • push完畢後用size判斷棧的長度
  • 而後定義一個等長的數組用於存放出棧的數據
  • 由於先進後出原則,出棧直接順序出棧便可
  • .val就是棧對象或者鏈表對象對應的值ide

    int[] print = new int[size];
    for (int i = 0; i < size; i++) {
        print[i] = stack.pop().val;
    }

    image.png

相關文章
相關標籤/搜索