【JavaScript实现数据结构系列】栈

作者: 苏星河 | 来源:发表于2016-03-21 14:51 被阅读98次

堆栈可以用链表和数组两种方式实现,这里分别给出这两种实现方式。
代码如下:

//数组实现
function Stack(){
   this.items = [];
   this.size = 0;
}
Stack.prototype = {
   constructor:Stack,
   push:function(data){
       this.items[this.size++] = data;
   },
   pop:function(){
       return this.items[--this.size];
   },
   clear:function(){
       this.size = 0;
       this.items = [];
   },
   perk:function(){
       return this.items[this.size-1];
   }
}
//链表实现
    function Stack(){
        this.top = null;
        this.size = 0;
    }
    Stack.prototype = {
        constructor:Stack,
        push:function(data){
            var node = {
                data:data,
                next:null
            };
            node.next = this.top;
            this.top = node;
            this.size++;
        },
        pop:function(){
            if(this.top === null){
                return null;
            }
            var out = this.top;
            this.top = this.top.next;
            if(this.size > 0){
                this.size--;    
            }
            return out.data;
        },
        perk:function(){
            return this.top === null ? null:this.top.data; 
        },
        clear:function(){
            this.top = null;
            this.size = 0;
        }

测试:

var stack = new Stack();
stack.push('k');
stack.push('b');
console.log(stack.perk());//输出b
stack.pop();
console.log(stack.perk());//输出k

栈的应用

例子:数值进制转换
算法思想如下:
(1) 最高位为 n % b,将此位压入栈。
(2) 使用 n/b 代替 n。
(3) 重复步骤 1 和 2,直到 n 等于 0,且没有余数。
(4) 持续将栈内元素弹出,直到栈为空,依次将这些元素排列,就得到转换后数字的字符串形式。

具体代码实现:

function mulBase(num,base){
    var stack = new Stack();
    do{
        stack.push(num % base); 
        num = Math.floor(num / base);
    }while(num>0);
    var result = '';
    while(stack.size > 0){
        result += stack.pop();
    }
    return result;
}
console.log(mulBase(234,2)); //输出11101010

初学者学习笔记,如有不对,还希望高手指点。如有造成误解,还希望多多谅解。

相关文章

  • 【JavaScript实现数据结构系列】栈

    堆栈可以用链表和数组两种方式实现,这里分别给出这两种实现方式。代码如下: 测试: 栈的应用 例子:数值进制转换算法...

  • 一、栈是什么? 一个后进先出的数据结构 JavaScript中没有栈,但是可以使用Array来实现栈的所有功能 代...

  • 算法 - 栈类型

    栈 一个后进先出的数据结构 javascript中没有栈,但可以用Array实现栈的所有功能 栈的应用场景 需要后...

  • 前端常见数据结构小结

    常见数据结构的 JavaScript 实现 栈 队列 链表 集合 字典 哈希表 二叉树 图 前端与数据结构 数据结...

  • JavaScript 中的深拷贝和浅拷贝

    JavaScript 内存中的堆和栈 栈(stack):堆是 JavaScript 用来存储静态数据的数据结构。静...

  • 基于javascript数组的栈方法和队列方法

    栈和队列是我们常见的两种数据结构,今天我们讨论的是如何基于javascript数组来实现这种结构。 栈:简而言之就...

  • Android面试题总结(题目+复习链接)

    数据结构 1.栈实现原理 java数据结构与算法之栈(Stack)设计与实现 - CSDN博客 2.链表实现原理 ...

  • 剑指offer第二版-30.包含min函数的栈

    本系列导航:剑指offer(第二版)java实现导航帖 面试题30:包含min函数的栈 题目要求:定义栈的数据结构...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

网友评论

    本文标题:【JavaScript实现数据结构系列】栈

    本文链接:https://www.haomeiwen.com/subject/dypklttx.html