08-棧:如何實現瀏覽器的前進和後退功能?
如何理解棧?
後進者先出,先進者後出,這就是典型的“棧”結構。棧是一種操作受限的線性表。
當某個資料集合只涉及在一端插入和刪除資料,並且滿足後進先出、先進後出的特性時,我們就應該首選“棧”這種資料結構。
棧可以用陣列或連結串列來實現,分別叫作順序棧和鏈式棧。入棧出棧時間複雜度都是 O(1)。
棧在函式呼叫中的應用
函式呼叫棧
表示式求值(通過兩個棧來實現)
括號匹配
瀏覽器的前進和後退功能(通過兩個棧來實現)
......
課後思考
- 為什麼函式呼叫要用“棧”來儲存臨時變數?用其他資料結構不好嗎?
因為函式呼叫符合後進先出的特性,用棧比較方便。
- JVM 記憶體管理中有“堆疊”的概念。棧記憶體用來儲存區域性變數和方法呼叫,堆記憶體用來儲存 Java 中的物件。JVM 裡面的“棧”和我們這裡說的“棧”是不是一回事呢?如果不是為什麼又叫作“棧”呢?
不是一回事。資料結構裡的堆和棧是資料儲存方式的兩種資料結構;記憶體中的堆疊,一般指的是資料操作的儲存位置。記憶體空間在邏輯上分為三部分:程式碼區、靜態資料區和動態資料區,動態資料區又分為棧區和堆區。
相關文章
- vue中前進重新整理、後退快取使用者瀏覽資料和瀏覽位置的實踐Vue快取
- [html]history禁用瀏覽器的後退功能(包括其他操作後退的按鈕,操作等)HTML瀏覽器
- 監聽瀏覽器的後退事件瀏覽器事件
- Ios、Android微信瀏覽器後退跳轉實現,及遇到的bugiOSAndroid瀏覽器
- 前端實現很哇塞的瀏覽器端掃碼功能?前端瀏覽器
- 瀏覽器是如何渲染網頁的《學如逆水行舟,不進則退》瀏覽器網頁
- Arduino小車基礎-前進後退和串列埠監視器UI串列埠
- win10系統瀏覽器閃退怎麼辦 win10瀏覽器閃退的方法Win10瀏覽器
- 如何使用css實現跨瀏覽器的最小高度?CSS瀏覽器
- JS模擬瀏覽器全域性搜尋功能實現JS瀏覽器
- vue路由前進後退動畫Vue路由動畫
- vue單頁實現前進重新整理後退不重新整理Vue
- 【譯】瀏覽器如何工作:在現代web瀏覽器場景的之下瀏覽器Web
- 判斷當前瀏覽器是不是微信瀏覽器瀏覽器
- 瀏覽器的全屏功能小結瀏覽器
- 如何利用 Chrome 瀏覽器實現滾動截圖Chrome瀏覽器
- 舉例說明如何實現瀏覽器桌面通知?瀏覽器
- php實現網站瀏覽足跡功能PHP網站
- JS實現瀏覽器列印WordJS瀏覽器
- 如何實現瀏覽器標籤頁之間的通訊瀏覽器
- 為什麼win10瀏覽器總是閃退_win10瀏覽器閃退是怎麼回事Win10瀏覽器
- Firefox 和 Tor 瀏覽器正進行整合,最終實現二合一Firefox瀏覽器
- Win10系統ie瀏覽器閃退該怎麼辦 Win10系統ie瀏覽器閃退的方法Win10瀏覽器
- 再談vue前進重新整理,後退不重新整理,include實現方法。Vue
- [譯] 如何根據瀏覽器的現代、過時進行包的分發瀏覽器
- win10系統下Edge瀏覽器如何禁用InPrivate無痕瀏覽功能Win10瀏覽器
- 用javascrip在瀏覽器上實現語音輸入和語義理解功能(speex壓Java瀏覽器
- 無伺服器計算:前進一步,後退兩步伺服器
- 如何更改iPhone和iPad的預設瀏覽器iPhoneiPad瀏覽器
- 從零實現的瀏覽器Web指令碼瀏覽器Web指令碼
- Shiro中的Rememberme後出現瀏覽器500錯誤REM瀏覽器
- JavaScript判斷當前裝置和瀏覽器型別JavaScript瀏覽器型別
- 微信跳轉wap外部瀏覽器介面如何實現瀏覽器
- vue-route-transition路由前進後退動畫Vue路由動畫
- js 呼叫瀏覽器複製功能JS瀏覽器
- microsoft edge是ie瀏覽器嗎 edge瀏覽器和ie瀏覽器一樣嗎ROS瀏覽器
- 隱藏在瀏覽器背後的“黑手”瀏覽器
- 微信跳轉瀏覽器提示,微信瀏覽器中直接跳轉手機預設瀏覽器是怎麼實現的瀏覽器