php 栈实现历史记录后退,栈:如何实现浏览器的前进和后退功能
受限制的線性表
先進(jìn)后出
實(shí)現(xiàn)一個(gè)棧
數(shù)組實(shí)現(xiàn)叫順序棧
public class ArrayStack {
private String[] items;//存儲(chǔ)數(shù)據(jù)的數(shù)組
private int count;//棧中的元素
private int n;//棧的大小
public ArrayStack(int n){
this.items = new String[n];
this.n = n;
this.count = 0;
}
//入棧操作
public boolean push(String item){
//如果棧滿了返回false,入棧失敗
if (count == n){
return false;
}
//將item放到下標(biāo)為count的位置,count +1
items[count] = item;
//棧中元素+1
count++;
return true;
}
//出棧操作
public String pop(){
//如果棧為空返回null
if (count == 0){
return null;
}
//返回下標(biāo)第n-1個(gè)元素
String temp = items[count - 1];
//元素總數(shù)減1
count--;
return temp;
}
}
支持動(dòng)態(tài)擴(kuò)容的順序棧
分析時(shí)間復(fù)雜度
對(duì)于出棧來說時(shí)間復(fù)雜度還是O(1)
對(duì)于入棧來說如果棧空間足夠時(shí)間復(fù)雜度為O(1),如果棧空間不夠用需要擴(kuò)容那么時(shí)間復(fù)雜度為O(n)
鏈表實(shí)現(xiàn)叫鏈?zhǔn)綏?/p>
性能分析
不論是順序棧還是鏈棧時(shí)間復(fù)雜度和空間復(fù)雜度都是O(1)
現(xiàn)實(shí)應(yīng)用
函數(shù)調(diào)用棧
棧幀
表達(dá)式求值
兩個(gè)棧實(shí)現(xiàn)
括號(hào)是否匹配
總結(jié)
以上是生活随笔為你收集整理的php 栈实现历史记录后退,栈:如何实现浏览器的前进和后退功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Latex的表格注释
- 下一篇: ios 点击出现另外一套tabbar_I