引入問題:如何實現瀏覽器的前進後退功能?
如何理解棧?
後進者先出,先進者後出,這個就是典型的「棧」結構
當某個資料集合只設計在一端插入和刪除資料,並且滿足後進先出的特性,我們就應該首選「棧」這種資料結構
如何實現乙個棧?
用 陣列實現的叫順序棧
用鍊錶實現的鏈式棧
// 基於陣列實現的順序棧
public
class
arraystack
// 入棧操作
public
boolean
push
(string item)
// 出棧操作
public string pop()
}
線性棧和鏈式棧的空間複雜度是o(1).時間複雜度是o(1)
支援動態擴容的順序棧
均攤時間複雜度一半都等於最好情況時間複雜度。
棧在函式呼叫中的應用
方法棧,棧溢位的原因?
棧在表示式求值的應用
課後思考
1.為什麼函式呼叫要用棧儲存臨時變數呢?
2.jvm裡面的堆疊跟我們說的棧是一回事麼?
資料結構和演算法學習 棧
棧是一種重要的線性結構,可以說是線性表的一種具體形式 官方定義 棧是乙個後進先出的線性表,它要求只在表尾進行刪除和插入操作 棧是一種特殊的線性表 順序表 鍊錶 操作上有一些特殊要求 1.棧的元素必須 後進先出 2.棧的操作只能在這個線性表的表尾進行。注 對於棧來說,表尾稱為棧的棧頂 top 相應的表...
資料結構和演算法學習筆記
資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。程式設計 資料結構 演算法 簡單來說資料結構就是關係,元素相互之間存在的一種或多種特定關係的集合。1.1 邏輯結構和物理結構 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條...
資料結構與演算法學習筆記
演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...