链式栈(js)

2020-07-20  本文已影响0人  mvlg

特点:先进后出

链式存储结构

  1. 类似于 c 的结构体,在线性存储空间进行随机的空间分配,并且通过指针按顺序将随机分配的空间串联在一起。
  2. 由于 js 不能直接进行内存的空间的访问,这里由 c 语言所不具有的 class 对象结构进行替换,指针则由 this 充当。

栈的实现(javascript)

  1. 栈的结点对象
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
}

  1. 栈对象
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()
    }
}
  1. 栈测试
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())
上一篇 下一篇

猜你喜欢

热点阅读