1. 栈的过程化表示
function stack() {
let top = () => null;
return {
push: (a) => {
let prevPop = top;
top = () => {
top = prevPop;
return a;
}
},
pop: () => top()
}
}
使用示例:
var s1 = stack()
s1.push(1)
s1.push(2)
s1.push(3)
s1.pop() //get 3
s1.pop() //get 2
2. 队列的过程化表示
function queue() {
let head = null
return {
add: (a) => {
let nextFun = null;
let newFun = (f) => {
if (f) {
(nextFun == null) ? (nextFun = f) : nextFun(f)
} else {
head = nextFun
return a
}
}
(head == null) ? (head = newFun) : head(newFun)
},
remove: () => head ? head(null) : null
};
}
使用示例:
var q = queue();
q.add(1)
q.add(2)
q.add(3)
q.remove() //get 1
q.remove() //get 2