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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
clipboard.js無需Flash無需依賴任何JS庫實現文本復制與剪切
這篇文章主要實現了無需Flash無需依賴任何JS庫實現文本復制與剪切,是一款極現代的,不需要flash,不依賴任何其他js庫的非常小的插件,叫clipboard.js,感興趣的小伙伴們可以參考一下2015-10-10
es6 javascript對象Object.values() , Object.entr
這篇文章主要介紹了es6 javascript對象Object.values() , Object.entries()的示例代碼,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12

