摘要:一前言計(jì)算機(jī)程序離不開(kāi)算法和數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)這門學(xué)科就是為了讓計(jì)算機(jī)能夠以更加高效,簡(jiǎn)單,便捷的方式來(lái)存儲(chǔ)和使用數(shù)據(jù)而產(chǎn)生的。返回一個(gè)布爾值,表示當(dāng)前是否為空棧。
一、前言
計(jì)算機(jī)程序離不開(kāi)算法和數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)這門學(xué)科就是為了讓計(jì)算機(jī)能夠以更加高效,簡(jiǎn)單,便捷的方式來(lái)存儲(chǔ)和使用數(shù)據(jù)而產(chǎn)生的。本文簡(jiǎn)單介紹棧(Stack)和隊(duì)列(Queue)的實(shí)現(xiàn)
二、圖解 三、線性表1、 順序存儲(chǔ)結(jié)構(gòu):用一段地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表的數(shù)據(jù)元素
2、 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):用一組任意的存儲(chǔ)單元存儲(chǔ)線性表的數(shù)據(jù)元素,這組存儲(chǔ)單元可以連續(xù),也可以不連續(xù),空間與內(nèi)存沒(méi)有線性關(guān)系
1、只允許在一端進(jìn)行插入和刪除操作的線性表
2、 實(shí)現(xiàn)的功能
push:在最頂層加入數(shù)據(jù)。
pop:返回并移除最頂層的數(shù)據(jù)。
peek:返回最頂層數(shù)據(jù)的值,但不移除它。
empty:返回一個(gè)布爾值,表示當(dāng)前stack是否為空棧。
2-1、初始化
private int[] arr; //常量用大寫(xiě) private final static int SIZE = 1; //棧的當(dāng)前指針 private int index; //構(gòu)造器沒(méi)有參數(shù)的 public StackDemo() { arr = new int[SIZE]; index = -1; }
2-2、push
//入棧 private void push(int target){ if (index == SIZE){ throw new StackOverflowError(); }else { //剛開(kāi)始為-1,要前加 arr[++index] = target; } }
2-3、peek
//返回棧頂元素 private int peek(){ if (index == -1){ throw new StackOverflowError(); }else { return arr[index]; } }
2-4、empty
//判空 private boolean empty(){ if (index == -1){ return true; } return false; }
3、代碼實(shí)現(xiàn)
import java.util.Arrays; /** * * @author buer * @date 2019/1/20 */ public class StackDemo { private int[] arr; //常量用大寫(xiě) private final static int SIZE = 1; //棧的當(dāng)前指針 private int index; //構(gòu)造器沒(méi)有參數(shù)的 public StackDemo() { arr = new int[SIZE]; index = -1; } //入棧 private void push(int target){ if (index == SIZE){ throw new StackOverflowError(); }else { //剛開(kāi)始為-1,要前加 arr[++index] = target; } } //出棧 private int pop(){ if (index == -1){ throw new StackOverflowError(); }else { return arr[index--]; } } //返回棧頂元素 private int peek(){ if (index == -1){ throw new StackOverflowError(); }else { return arr[index]; } } //判空 private boolean empty(){ if (index == -1){ return true; } return false; } public static void main(String[] args) { StackDemo stackDemo = new StackDemo(); stackDemo.push(1); System.out.println(stackDemo.toString()); stackDemo.pop(); System.out.println(stackDemo.toString()); } @Override public String toString() { return "StackDemo{" + "arr=" + Arrays.toString(arr) + ", index=" + index + "}"; } }應(yīng)用
1、括號(hào)匹配
2、中綴表達(dá)式(人類的思考)和后綴表達(dá)式(計(jì)算機(jī)的計(jì)算)
3、遞歸
4、瀏覽器的前進(jìn)后退功能
參考資料https://zh.wikipedia.org
https://www.zhihu.com/question/21318658
http://www.ruanyifeng.com/blog/2013/11/stack.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73089.html
摘要:講作用域鏈?zhǔn)紫纫獜淖饔糜蛑v起,下面是百度百科里對(duì)作用域的定義作用域在許多程序設(shè)計(jì)語(yǔ)言中非常重要。原文出處談?wù)務(wù)Z法里一些難點(diǎn)問(wèn)題二 3) 作用域鏈相關(guān)的問(wèn)題 作用域鏈?zhǔn)莏avascript語(yǔ)言里非常紅的概念,很多學(xué)習(xí)和使用javascript語(yǔ)言的程序員都知道作用域鏈?zhǔn)抢斫鈐avascript里很重要的一些概念的關(guān)鍵,這些概念包括this指針,閉包等等,它非常紅的另一個(gè)重要原因就...
摘要:換句話說(shuō),定義在閉包中的函數(shù)可以記憶它被創(chuàng)建時(shí)候的環(huán)境。詞法環(huán)境的概念定義摘自百科。一個(gè)詞法環(huán)境由一個(gè)環(huán)境記錄項(xiàng)和可能為空的外部詞法環(huán)境引用構(gòu)成。中使用詞法環(huán)境管理靜態(tài)作用域。 一個(gè)資深的同事在我出發(fā)去面試前告誡我,問(wèn)JS知識(shí)點(diǎn)的時(shí)候千萬(wàn)別主動(dòng)提閉包,它就是一個(gè)坑啊!坑?。“。?閉包確實(shí)是js的難點(diǎn)和重點(diǎn),其實(shí)也沒(méi)那么可怕,關(guān)鍵是機(jī)制的理解,可以和函數(shù)一起單獨(dú)拿出來(lái)說(shuō)說(shuō),其實(shí)關(guān)于閉包的...
摘要:容易導(dǎo)致內(nèi)存泄漏。如果我們的強(qiáng)引用不存在的話,那么就會(huì)被回收,也就是會(huì)出現(xiàn)我們沒(méi)被回收,被回收,導(dǎo)致永遠(yuǎn)存在,出現(xiàn)內(nèi)存泄漏。緩存行和一次定位,不會(huì)有沖突由于使用數(shù)組,不會(huì)出現(xiàn)回收,沒(méi)被回收的尷尬局面,所以避免了內(nèi)存泄漏。 1 背景 某一天在某一個(gè)群里面的某個(gè)群友突然提出了一個(gè)問(wèn)題:threadlocal的key是虛引用,那么在threadlocal.get()的時(shí)候,發(fā)生GC之后,ke...
摘要:引子前不久我建立的技術(shù)群里一位問(wèn)了一個(gè)這樣的問(wèn)題,她貼出的代碼如下所示執(zhí)行結(jié)果如下所示第一個(gè)第二個(gè)這是一個(gè)令人詫異的結(jié)果,為什么第一個(gè)彈出框顯示的是,而不是呢這種疑惑的原理我描述如下一個(gè)頁(yè)面里直接定義在標(biāo)簽下的變量是全局變量即屬于對(duì)象的變量 1) 引子 前不久我建立的技術(shù)群里一位MM問(wèn)了一個(gè)這樣的問(wèn)題,她貼出的代碼如下所示: var a = 1; function hehe...
閱讀 1152·2021-11-23 10:04
閱讀 2412·2021-11-22 15:29
閱讀 2806·2021-11-19 09:40
閱讀 729·2021-09-22 15:26
閱讀 2129·2019-08-29 16:27
閱讀 2498·2019-08-29 16:10
閱讀 1932·2019-08-29 15:43
閱讀 3284·2019-08-29 12:43