栈
特点:先进后出
链式存储结构
- 类似于 c 的结构体,在线性存储空间进行随机的空间分配,并且通过指针按顺序将随机分配的空间串联在一起。
- 由于 js 不能直接进行内存的空间的访问,这里由 c 语言所不具有的 class 对象结构进行替换,指针则由 this 充当。
栈的实现(javascript)
- 栈的结点对象
class StackNode
{
constructor (data)
{
this.data = data
this.next = false
}
getData = () => this.data
setData = data => this.data = data
getNext = () => this.next
setNext = next => this.next = next
}
- 栈对象
class Stack
{
constructor ()
{
this.head = false
this.tail = false
}
empty ()
{
return this.head === false
}
push (data)
{
let temp = new StackNode(data)
if (!this.head)
{
this.head = this.tail = temp
}
else
{
temp.setNext(this.head)
this.head = temp
}
}
pop ()
{
if (this.empty()) return false
let data = this.head
this.head = this.head.getNext()
return data.getData()
}
}
- 栈测试
let S = new Stack()
S.push({'name': 'Jack'})
S.push(7)
S.push(8)
S.push(5)
S.push(6)
S.push(4)
S.push(1)
console.log(S.pop())
console.log(S.pop())
console.log(S.pop())
console.log(S.pop())
console.log(S.pop())
console.log(S.pop())
console.log(S.pop())
网友评论