棧 如何實現瀏覽器的前進和後退功能?

2022-03-16 23:58:16 字數 419 閱讀 1270

後進先出,先進後出,這就是典型的「棧」結構。

從棧的操作特性來看,是一種「操作受限」的線性表,只允許在一端進行操作,比如插入和刪除資料。

棧是一種操作受限的資料結構,其操作特性用陣列和鍊錶均可實現。

但是,任何資料結構都是對特定應用場景的抽象,陣列和鍊錶雖然使用起來更加靈活,但卻暴露了幾乎所有的操作,難免會引發錯誤操作的風險。

所以,當某個資料集合只涉及在某一端插入和刪除資料,且滿足後進者先出,先進者後出的操作特性時,我們應該首選棧這種資料結構。

通過兩個棧實現瀏覽器得到前進後退功能。

乙個棧x,乙個棧y。

每次跳轉到新頁面時將此頁面壓入x,並清空y;當點選後退按鈕式時,將x出棧,並壓入到y;當點選前進按鈕時,將y出棧,壓入x。

x為空時表示沒有頁面可以後退瀏覽了,當y為空時表示沒有頁面可以前進瀏覽了。

Day4 棧 瀏覽器的前進和後退

主題 使用棧實現瀏覽器的前進和後退功能 問 什麼是棧?答 棧是一種操作受限的線性表,具有後進先出的功能 問 棧的實現方式有哪些?答 使用資料實現棧和使用鍊錶實現棧 問 入棧和出棧的時間複雜度?答 入棧和出棧的時間複雜度均為o 1 空間複雜度也為o 1 但是如果是使用陣列實現的棧,並且是動態擴容的,其...

資料結構 棧 瀏覽器前進後退應用

瀏覽器前進後退 當你依次瀏覽a,b,c,然後回到b,再瀏覽d,就只能檢視a,b,d,了。原理 利用兩個棧a,b 瀏覽新網頁的時候,壓入棧a,清空棧b 前進,棧a獲取棧b的棧頂元素,棧b彈棧,並壓入棧a 後退,棧b獲取棧a的棧頂元素,棧a彈棧,並壓入棧b 題目 leetcode 5430.設計瀏覽器歷...

使用stack實現瀏覽器的頁面的前進後退

測試 public class main stack package com.fine.stack import com.fine.list import com.fine.list.myarraylist description 後進先出 author 介面設計 size 入棧 出棧 清空 獲取棧...