现在的位置: 首页 > 综合 > 正文

Javascript数组实现数据结构中的堆栈和队列

2014年02月14日 ⁄ 综合 ⁄ 共 2962字 ⁄ 字号 评论关闭

Stack

function Stack(){
    //存储元素数组
    var aElement = new Array();
    /*
    * @brief: 元素入栈
    * @param: 入栈元素列表
    * @return: 堆栈元素个数
    * @remark: 1.Push方法参数可以多个
    *    2.参数为空时返回-1
    */
    Stack.prototype.Push = function(vElement){
        if (arguments.length == 0)
            return - 1;
        //元素入栈
        for (var i = 0; i < arguments.length; i++){
            aElement.push(arguments[i]);
        }
        return aElement.length;
    }
    /*
    * @brief: 元素出栈
    * @return: vElement
    * @remark: 当堆栈元素为空时,返回null
    */
    Stack.prototype.Pop = function(){
        if (aElement.length == 0)
            return null;
        else
            return aElement.pop();
    }
    /*
    * @brief: 获取堆栈元素个数
    * @return: 元素个数
    */
    Stack.prototype.GetSize = function(){
        return aElement.length;
    }
    /*
    * @brief: 返回栈顶元素值
    * @return: vElement
    * @remark: 若堆栈为空则返回null
    */
    Stack.prototype.GetTop = function(){
        if (aElement.length == 0)
            return null;
        else
            return aElement[aElement.length - 1];
    }
    /*
    * @brief: 将堆栈置空
    */
    Stack.prototype.MakeEmpty = function(){
        aElement.length = 0;
    }
    /*
    * @brief: 判断堆栈是否为空
    * @return: 堆栈为空返回true,否则返回false
    */
    Stack.prototype.IsEmpty = function(){
        if (aElement.length == 0)
            return true;
        else
            return false;
    }
    /*
    * @brief: 将堆栈元素转化为字符串
    * @return: 堆栈元素字符串
    */
    Stack.prototype.toString = function(){
        var sResult = (aElement.reverse()).toString();
        aElement.reverse()
        return sResult;
    }
}

Queue

function Queue(){
    //存储元素数组
    var aElement = new Array();
    /*
    * @brief: 元素入队
    * @param: vElement元素列表
    * @return: 返回当前队列元素个数
    * @remark: 1.EnQueue方法参数可以多个
    *    2.参数为空时返回-1
    */
    Queue.prototype.EnQueue = function(vElement){
        if (arguments.length == 0)
            return - 1;
        //元素入队
        for (var i = 0; i < arguments.length; i++){
            aElement.push(arguments[i]);
        }
        return aElement.length;
    }
    /*
    * @brief: 元素出队
    * @return: vElement
    * @remark: 当队列元素为空时,返回null
    */
    Queue.prototype.DeQueue = function(){
        if (aElement.length == 0)
            return null;
        else
            return aElement.shift();
 
    }
    /*
    * @brief: 获取队列元素个数
    * @return: 元素个数
    */
    Queue.prototype.GetSize = function(){
        return aElement.length;
    }
    /*
    * @brief: 返回队头素值
    * @return: vElement
    * @remark: 若队列为空则返回null
    */
    Queue.prototype.GetHead = function(){
        if (aElement.length == 0)
            return null;
        else
            return aElement[0];
    }
    /*
    * @brief: 返回队尾素值
    * @return: vElement
    * @remark: 若队列为空则返回null
    */
    Queue.prototype.GetEnd = function(){
        if (aElement.length == 0)
            return null;
        else
            return aElement[aElement.length - 1];
    }
    /*
    * @brief: 将队列置空
    */
    Queue.prototype.MakeEmpty = function(){
        aElement.length = 0;
    }
    /*
    * @brief: 判断队列是否为空
    * @return: 队列为空返回true,否则返回false
    */
    Queue.prototype.IsEmpty = function(){
        if (aElement.length == 0)
            return true;
        else
            return false;
    }
    /*
    * @brief: 将队列元素转化为字符串
    * @return: 队列元素字符串
    */
    Queue.prototype.toString = function(){
        var sResult = (aElement.reverse()).toString();
        aElement.reverse()
        return sResult;
    }
}
var Quen;
function init()
{
Quen=new Queue();
return Quen;
}

测试代码:

 

var oStack = new Stack();
 
oStack.Push("abc", "123", 890);
 
console.log(oStack.toString());
 
oStack.Push("qq");
 
console.log(oStack.toString());
 
//  alert(oStack.GetSize());
 
//  alert(oStack.Pop());
 
//  alert(oStack.GetTop());
 
//  oStack.MakeEmpty();
 
//  alert(oStack.GetSize());
 
//  alert(oStack.toString());
 
delete oStack;
 
var oQueue = new Queue();
 
oQueue.EnQueue("bbs", "fans", "bruce");
 
console.log(oQueue.toString());
 
oQueue.EnQueue(23423);
 
console.log(oQueue.toString());
 
//  alert(oQueue.DeQueue());
 
//  alert(oQueue.GetSize());
 
//  alert(oQueue.GetHead());
 
//  alert(oQueue.GetEnd());
 
//  oQueue.MakeEmpty();
 
//  alert(oQueue.IsEmpty());
 
//  alert(oQueue.toString());
 
delete oQueue;

 

抱歉!评论已关闭.