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

Typescript實現(xiàn)棧的方法示例

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

棧的概念

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

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

棧的示意圖

棧的操作

  • 入棧:添加一個新元素至棧頂
  • 出棧:將棧頂元素移除并返回被移除的元素
  • 獲取棧頂元素:獲取當(dāng)前棧頂元素并返回
  • 判斷棧是否為空:判斷棧中是否有數(shù)據(jù)即可
  • 清空棧:移除棧內(nèi)所有的元素
  • 獲取棧的大?。悍祷貤V性氐膫€數(shù)
  • 打印棧中元素:遍歷并輸出棧中元素

功能實現(xiàn)描述

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

代碼實現(xiàn)

入棧

  //入棧
    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 = [];
    }

獲取棧的大小

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

輸出棧內(nèi)數(shù)據(jù)

 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();
//輸出棧中元素數(shù)量
console.log('棧中有:'+stack_example.size()+'個元素');
//刪除棧頂元素
stack_example.pop()
//再次打印棧中元素
stack_example.print_stack();

測試結(jié)果如下:

測試結(jié)果

完整代碼實現(xiàn)

//棧的實現(xiàn)
//數(shù)組棧
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;
    }

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

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

    //獲取棧內(nèi)元素數(shù)量
    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();
//輸出棧中元素數(shù)量
console.log('棧中有:'+stack_example.size()+'個元素');
//刪除棧頂元素
stack_example.pop()
//再次打印棧中元素
stack_example.print_stack();

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

相關(guān)文章

最新評論