JavaScript資料結構之堆疊結構
- 前言
- 一、堆疊結構是什么?
- 二、常見的堆疊結構使用:函式呼叫堆疊、遞回等,
- 三、堆疊的常見操作
- 四、使用步驟
- 1.創建Stack類:
- 2.使用堆疊:
- 總結
前言
隨著前端的興起,JavaScript這門語言也越來越受歡迎,接下來,讓我們了解一下如何使用JavaScript來寫資料結構中的堆疊結構吧!
一、堆疊結構是什么?
陣列是一個線性結構,并且可以在陣列的任意位置插入和洗掉元素,而堆疊就是比較常見的受限的線性結構,無論是插入或是洗掉只能在堆疊頂進行操作,在堆疊中插入操作被稱為壓堆疊或是入堆疊,洗掉操作被稱為出堆疊或是退堆疊,
堆疊的特點為先進后出,后進先出(LIFO:last in first out),
二、常見的堆疊結構使用:函式呼叫堆疊、遞回等,
函式呼叫堆疊:如A函式中呼叫了B函式,B函式中又呼叫了C函式,這樣在呼叫A函式時先將A函式壓入堆疊,由于A函式中呼叫了B函式,所以將B函式再壓入堆疊,以此類推,c函式也壓入堆疊,這時堆疊頂是C函式,只有C函式執行完出堆疊后,B函式才能執行出堆疊,最后A函式出堆疊,這就是函式呼叫堆疊,
遞回:遞回是在函式內部呼叫自身,原理和函式呼叫堆疊類似,
三、堆疊的常見操作
push(element):添加一個新元素到堆疊頂位置;
pop():移除堆疊頂的元素,同時回傳被移除的元素;
peek():回傳堆疊頂的元素,不對堆疊做任何修改(該方法不會移除堆疊頂的元素,僅僅回傳它);
isEmpty():如果堆疊里沒有任何元素就回傳true,否則回傳false;
size():回傳堆疊里的元素個數,這個方法和陣列的length屬性類似;
toString():將堆疊結構的內容以字串的形式回傳,
四、使用步驟
1.創建Stack類:
function Stack() {
// 以陣列形式存盤堆疊資料
this.items = [];
// (不推薦!!!因為在Stack物件添加方法,其他物件無法復用)
// this.push = function (element) {
// this.item.push(element);
// }
// 在Stack類添加方法,可以使多物件復用
// 入堆疊
Stack.prototype.push = function (element) {
this.items.push(element);
}
// 判斷是否為空
Stack.prototype.isEmpty = function () {
return this.items.length == 0;
}
// 出堆疊
Stack.prototype.pop = function () {
return this.items.pop();
}
// 查看堆疊頂元素
Stack.prototype.peek = function () {
return this.items[this.items.length - 1]
}
// 獲取堆疊中元素個數
Stack.prototype.size = function () {
return this.items.length;
}
// 以字串形式輸出元素
Stack.prototype.toString = function () {
// 加上空字串隱式轉換成字串
let result = '';
for (let i of this.items) {
// 加上' '可以在元素中以空格隔開
result += i + ' ';
}
return result;
}
// 以上代碼也可以寫成ES6箭頭函式形式如:
// Stack.prototype.push = (element) => {
// this.item.push(element);
// }
}
2.使用堆疊:
let s = new Stack();
// 將資料壓入堆疊
s.push(10);
s.push(20);
s.push(30);
s.push(40);
// 將堆疊頂元素出堆疊(40出堆疊)
console.log(s.pop());
// 查看堆疊頂元素(30)
console.log(s.peek());
// 查看堆疊是否為空(false,目前堆疊還有3個元素)
console.log(s.isEmpty());
// 查看堆疊元素個數(3)
console.log(s.size());
// 轉化成以空格隔開的字串形式(10 20 30)
console.log(s.toString());
控制臺:

總結
看了這些,你是否對堆疊結構有了一定認識呢?
由于自身水平有限,本篇文章僅代表個人理解,如有錯誤,歡迎指正!與君共勉!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/250241.html
標籤:其他
下一篇:初識Vue.js
