成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

簡(jiǎn)單談?wù)剹?

王偉廷 / 3357人閱讀

摘要:一前言計(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

相關(guān)文章

  • 談?wù)?/em>javascript語(yǔ)法里一些難點(diǎn)問(wèn)題(二)

    摘要:講作用域鏈?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è)重要原因就...

    Enlightenment 評(píng)論0 收藏0
  • 談?wù)?/em>JavaScript的詞法環(huán)境和閉包(一)

    摘要:換句話說(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)于閉包的...

    AlphaWatch 評(píng)論0 收藏0
  • 談?wù)?/em>Java引用和Threadlocal的那些事

    摘要:容易導(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...

    justjavac 評(píng)論0 收藏0
  • 談?wù)?/em>javascript語(yǔ)法里一些難點(diǎn)問(wèn)題(一)

    摘要:引子前不久我建立的技術(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...

    huaixiaoz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<