当前位置:  开发笔记 > 编程语言 > 正文

用JavaScript进行堆栈操作

如何解决《用JavaScript进行堆栈操作》经验,为你挑选了1个好方法。

我正在用JavaScript实现一个堆栈.

考虑:

Stack{0,1,2,3} Top:0

现在用户弹出值2:

Stack{0,1,3} Top:0

这是堆栈可接受的行为吗?我正在滚动自己的堆栈,但有没有内置的代码可以为我做这个?

我的代码:

function Stack() //Creating Stack Object
{
    // Create an empty array of cards.
    this.cards = new Array();  //Cards array inside stack object
    this.push  = pushdata;     //Call pushdata function on push operation
    this.pop   = popdata;      //Call popdata function on pop operation
    this.printStack = showStackData; //Call showStackData function on printstack operation
}

function pushdata(data)
{
    this.cards.push(data);
}

function popdata(data)
{
    return this.cards.pop();
}

function showStackData()
{
    return this.cards;
}

var a = new Stack(); //Create stack Object
a.push(12);          //Push Data onto Stack
a.push(32);
a.push(42);
var z = a.pop();
document.write("Data Popped: " + z);
document.write("Stack Output: " + a.printStack());

如果堆栈不是此应用程序的正确数据结构类型,那么正确的是什么?



1> bobince..:

在堆栈中执行上述操作是合法的吗?

这不是传统的堆栈操作.允许您这样做的数据结构实际上不能称为堆栈; 它更像是一个简单的旧列表.

如果stack不允许删除top和start之间的数据.在javascript中用于上述逻辑的alter datastructure是什么?

简单数组有什么问题吗?它为您提供了您想要的随机访问项目:

var a= [0, 1, 2, 3];
a.splice(1, 1);
// a==[0, 2, 3]

加上用于访问前端和尾部堆栈(以及队列)的堆栈式便捷方法:push/pop/shift/unshift.

当Array()已经覆盖IMO时,制作自己的Stack()包装类没有多大意义.虽然计算机科学家可能对诸如堆栈链接列表的算法复杂性之类的事情感兴趣,但实际上,您无法从更高级别的代码改进现有JavaScript解释器中内置的优化阵列实现.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有