欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Typescript實現棧的方法示例

 更新時間:2024年08月23日 10:40:13   作者:samroom  
本文主要介紹了Typescript實現棧的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

棧的概念

棧(Stack):是只允許在一端進行插入或刪除的線性表。首先棧是一種線性表,但限定這種線性表只能在某一端進行插入和刪除操作。此外,棧還遵循后進先出(LIFO)原則,或者說先進后出原則。

棧頂:線性表插入或者刪除元素的一端。

棧的示意圖

棧的操作

  • 入棧:添加一個新元素至棧頂
  • 出棧:將棧頂元素移除并返回被移除的元素
  • 獲取棧頂元素:獲取當前棧頂元素并返回
  • 判斷棧是否為空:判斷棧中是否有數據即可
  • 清空棧:移除棧內所有的元素
  • 獲取棧的大小:返回棧中元素的個數
  • 打印棧中元素:遍歷并輸出棧中元素

功能實現描述

上述操作中其實有很多都有現成的API可以直接使用并實現上實現上述操作:
1. 入棧(push):可以使用數組的push方法直接往數組的末尾添加元素。
2. 出棧(pop):可以使用數組的pop方法直接移除棧中的元素,該方法會返回當前被移除的元素。
3. 獲取棧頂元素(peek):可以通過數組的長度-1獲取到數組中的最后一個元素。
4. 判斷棧是否為空(isEmpty):可以通過判斷數組的長度是否為0來實現。
5. 清空棧(clear):可以將數組直接賦值為空或者調用出棧方法直至棧中的數據為空。
6. 獲取棧的大?。褐苯臃祷貤5拈L度即可

代碼實現

入棧

  //入棧
    push(item:T){
        this.items.push(item);
    }

出棧

 //出棧
    pop(){
        return this.items.pop();
    }

返回棧頂元素

//返回棧頂元素
    peek(){
        return this.items[this.items.length-1];
    }

判斷棧是否為空

 //判斷棧是否為空
    isEmpty(){
        return this.items.length ? false : true;
    }

清空棧的元素

clear(){
        this.items = [];
    }

獲取棧的大小

 //獲取棧內元素數量
    size():number{
        return this.items.length;
    }

輸出棧內數據

 print_stack(){
        if(this.isEmpty()) console.log('棧為空');
        for(let i = 0;i < this.items.length;i++){
            console.log(this.items[i]);
        }
    }

測試

let stack_example = new stack();
//添加兩個元素
stack_example.push(5);
stack_example.push(6);
//判斷是否棧為空
if(stack_example.isEmpty()) {console.log('棧為空')}
else {console.log('棧不為空')}
//打印棧中元素
stack_example.print_stack();
//輸出棧中元素數量
console.log('棧中有:'+stack_example.size()+'個元素');
//刪除棧頂元素
stack_example.pop()
//再次打印棧中元素
stack_example.print_stack();

測試結果如下:

測試結果

完整代碼實現

//棧的實現
//數組棧
class stack<T>{
    private items:T[]

    constructor(){
        this.items = [];
    }
    //入棧
    push(item:T){
        this.items.push(item);
    }
    //出棧
    pop(){
        return this.items.pop();
    }

    //返回棧頂元素
    peek(){
        return this.items[this.items.length-1];
    }

    //判斷棧是否為空
    isEmpty(){
        return this.items.length ? false : true;
    }

    //清空棧的棧內元素
    clear(){
        this.items = [];
    }

    //輸出棧內數據
    print_stack(){
        if(this.isEmpty()) console.log('棧為空');
        for(let i = 0;i < this.items.length;i++){
            console.log(this.items[i]);
        }
    }

    //獲取棧內元素數量
    size():number{
        return this.items.length;
    }
}

let stack_example = new stack();
//添加兩個元素
stack_example.push(5);
stack_example.push(6);
//判斷是否棧為空
if(stack_example.isEmpty()) {console.log('棧為空')}
else {console.log('棧不為空')}
//打印棧中元素
stack_example.print_stack();
//輸出棧中元素數量
console.log('棧中有:'+stack_example.size()+'個元素');
//刪除棧頂元素
stack_example.pop()
//再次打印棧中元素
stack_example.print_stack();

到此這篇關于Typescript實現棧的方法示例的文章就介紹到這了,更多相關Typescript 棧內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • 微信公眾號h5使用微信支付及支付寶支付的步驟(前端)

    微信公眾號h5使用微信支付及支付寶支付的步驟(前端)

    微信H5支付是一種支付解決方案,主要適用于商戶在微信客戶端外的移動端網頁上展示商品或服務的場景,這篇文章主要給大家介紹了關于微信公眾號h5使用微信支付及支付寶支付(前端)的相關資料,需要的朋友可以參考下
    2024-07-07
  • 分享9點個人認為比較重要的javascript 編程技巧

    分享9點個人認為比較重要的javascript 編程技巧

    接觸和學習javascript也有3~4年了,真正牽扯到前后臺數據的交互,數據算法等高級編程知之甚少,甚至很少用,如果你問我你知道js什么知識呢?我可能只能說知道點jQuery的技巧,說編程都談不上,所以需要把某一些技巧作為編程習慣固定下來,免于以后有人問我你知道什么?
    2015-04-04
  • JavaScript對數字的判斷與處理實例分析

    JavaScript對數字的判斷與處理實例分析

    這篇文章主要介紹了JavaScript對數字的判斷與處理方法,實例分析了javascript判斷數字的常見方法與針對數字處理的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • js仿支付寶填寫支付密碼效果實現多方框輸入密碼

    js仿支付寶填寫支付密碼效果實現多方框輸入密碼

    這篇文章主要介紹了js仿支付寶填寫支付密碼效果實現多方框輸入密碼的功能,感興趣的小伙伴們可以參考一下
    2016-03-03
  • javascript權威指南 學習筆記之變量作用域分享

    javascript權威指南 學習筆記之變量作用域分享

    最近一直在看《javascript權威指南 第五版》,變量作用域這一章,看得真的有點累。不過,收獲還是多多。
    2011-09-09
  • clipboard.js在移動端復制失敗的解決方法

    clipboard.js在移動端復制失敗的解決方法

    最近在使用clipboard.js碰到的一個小問題,通過查找相關資料解決了,所以下面這篇文章主要給大家介紹了關于clipboard.js在移動端復制失敗的解決方法,需要的朋友可以參考借鑒,下面來一起學習學習吧
    2018-06-06
  • clipboard.js無需Flash無需依賴任何JS庫實現文本復制與剪切

    clipboard.js無需Flash無需依賴任何JS庫實現文本復制與剪切

    這篇文章主要實現了無需Flash無需依賴任何JS庫實現文本復制與剪切,是一款極現代的,不需要flash,不依賴任何其他js庫的非常小的插件,叫clipboard.js,感興趣的小伙伴們可以參考一下
    2015-10-10
  • js使用split函數按照多個字符對字符串進行分割的方法

    js使用split函數按照多個字符對字符串進行分割的方法

    這篇文章主要介紹了js使用split函數按照多個字符對字符串進行分割的方法,實例分析了split函數的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • 深入淺析JS的數組遍歷方法(推薦)

    深入淺析JS的數組遍歷方法(推薦)

    這篇文章主要介紹了深入淺析JS的數組遍歷方法(推薦)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • es6 javascript對象Object.values() , Object.entries()示例詳解

    es6 javascript對象Object.values() , Object.entr

    這篇文章主要介紹了es6 javascript對象Object.values() , Object.entries()的示例代碼,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12

最新評論