Skip to content

栈(Stack) #14

Open
Open
@funnycoderstar

Description

@funnycoderstar

栈的三种含义

1.数据结构

先进后出

2.代码运行方式

调用栈

3.内存区域

程序运行的时候需要内存空间存放数据, 一般来说系统会划分为两种不同的方式来存储数据, 一种是栈(Stack),一种是
堆(heap);

内存分配中中的堆栈
栈: 由操作系统自由分配释放,存放函数的参数值, 局部变量的值等
堆: 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收

使用JS实现栈

class Stack {
    constructor() {
        this.items = []; 
    }
    push(element) {
        this.items.push(element)
    }
    pop() {
        this.items.pop();
    }
    // 查看栈顶元素
    peek() {
        return this.items[this.items.length -1];
    }
    isEmpty() {
        return this.items.length == 0;
    }
    size() {
        return this.items.length;
    }
    clear() {
        this.items = [];
    }
    print() {
        console.log(this.items.toString());
    }

}

用栈来解决问题

十进制转二进制

function divideBy2(decNumber) {
    var remStack = new Stack, rem, binaryString = '';
    while(decNumber > 0) {
        rem = Math.floor(decNumber % 2);
        remStack.push(rem);
        decNumber = Math.floor(decNumber / 2);
    }
    while(!remStack.isEmpty()) {
        binaryString += remStack.pop().toString();
    }
    return binaryString;
    
}

十进制转成其他任意进制

参考

Stack的三种含义
什么是堆?什么是栈?他们之间有什么区别和联系?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions