JS数组实现栈

function Stack () {

    this.list = [];
    Stack.prototype.push = (item) => {
        this.list.push(item);
    }

    Stack.prototype.pop = () => {
        this.list.pop();
    }

    Stack.prototype.size = () => {
        return this.list.length;
    }
    
    Stack.prototype.isEmpty = () => {
        return this.list.length === 0;
    }

    Stack.prototype.peek = () => {
        return this.list[this.list.length -1];
    }

    Stack.prototype.toString = () => {
        let result = '';
        for ( let i of this.list) {
            result = result + i + ' ';
        }
        return result;
    }
}

let stack = new Stack();

console.log('--CL--1--', stack);

stack.push('2222');
stack.push('33');
stack.push('1');

console.log('--CL--2--', stack);

console.log('--CL--3--', stack.size());

stack.pop();

console.log('--CL--4--', stack);

console.log('--CL--5--', stack.peek());

console.log('--CL--6--', stack.isEmpty());

console.log('--CL--7--', stack.toString());

JS数组实现栈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用两个实现浏览器的前进和后退功能。我们假设当前正在浏览的网页为 A,然后我们访问了 B 和 C 两个网页,此时两个的情况如下: 后退:[C, B, A] 前进:[] 当我们点击后退按钮时,我们从后退中弹出顶元素 C,并将其压入前进中,此时两个的情况如下: 后退:[B, A] 前进:[C] 当我们再次点击后退按钮时,我们从后退中弹出顶元素 B,并将其压入前进中,此时两个的情况如下: 后退:[A] 前进:[C, B] 当我们点击前进按钮时,我们从前进中弹出顶元素 C,并将其压入后退中,此时两个的情况如下: 后退:[C, A] 前进:[B] 当我们再次点击前进按钮时,我们从前进中弹出顶元素 B,并将其压入后退中,此时两个的情况如下: 后退:[B, C, A] 前进:[] 这样就可以用两个实现浏览器的前进和后退功能了。以下是一个简单的 JavaScript 实现: ```javascript var backStack = []; // 后退 var forwardStack = []; // 前进 function goTo(url) { backStack.push(url); forwardStack = []; // 跳转到 url } function back() { if (backStack.length > 1) { var currentUrl = backStack.pop(); forwardStack.push(currentUrl); // 跳转到上一个 url } } function forward() { if (forwardStack.length > 0) { var currentUrl = forwardStack.pop(); backStack.push(currentUrl); // 跳转到下一个 url } } ``` 在这个实现中,我们通过 backStack 和 forwardStack 两个数组来模拟后退和前进。goTo 函数用来跳转到一个新的 url,每次跳转时我们将当前的 url 压入后退中,并清空前进。back 函数用来执行后退操作,如果后退中有多于一个元素,则弹出后退顶元素并压入前进中,然后跳转到上一个 url。forward 函数用来执行前进操作,如果前进中有元素,则弹出前进顶元素并压入后退中,然后跳转到下一个 url。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值