用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。
分析
隊列特性:先進先出
棧:先進後出
js中我們用數組實現棧,單個數組 壓棧push(),出棧pop(),
js中同樣用數組實現隊列,入隊 push(),出隊shift(),如果用兩個棧(數組)則我們只需要將另外一個數組reverse()
代碼
- 兩個數組實現
let stackA = [];
let stackB = [];
function push(node) {
// write code here
let succ = false;
if (typeof node === 'number') {
stackA.push(node);
succ = true;
} else {
succ = false;
}
return succ;
}
function pop() {
// write code here
let cur = null;
if (stackB.length > 0) {
cur = stackB.pop();
} else {
if (stackA.length > 0) {
/* stackA.forEach(item=>{
stackB = stackA.reverce();
})*/
stackB = stackA.reverse();
stackA = [];
cur = stackB.pop();
}
}
return cur
}
2.一個數組實現
let stackA = [];
function push(node) {
// write code here
let succ = false;
if (typeof node === 'number') {
stackA.push(node);
succ = true;
} else {
succ = false;
}
return succ;
}
function pop() {
// write code here
let cur = null;
if (stackA.length > 0) {
cur = stackA.shift();
}
return cur
}
總結
js中實現棧和隊列數據結構最主要是對數組的幾個操作方法應用
pop 尾部刪除,返回刪除元素數組長度減一
push 尾部添加,數組長度加一
shift 頭部刪除,返回刪除元素,長度減一
unshift 頭部添加,長度加一
reverse 數組內容順序反轉