文档章节

Javascript - 栈 和 单链表

huangjacky
 huangjacky
发布于 2014/10/12 12:21
字数 264
阅读 8
收藏 0

最近在重温数据结构,于是写了一些代码玩玩,都是很初级的,表喷各位。。。。

function Stack() {
    this.dataStore = [];
    this.top = 0;
}

Stack.prototype = {
    length: function () {
        return this.top;
    }, push: function (element) {
        this.dataStore[this.top++] = element;
        return this.top;
    }, pop: function () {
        return this.dataStore[--this.top];
    }, peek: function () {
        return this.dataStore[this.top - 1];
    }, clear: function () {
        return this.top = 0;
    }
};

var stack = new Stack();
console.log("length:" + stack.length());
stack.push("huangjacky");
stack.push("fiend");
console.log("length:" + stack.length());
while (stack.length() > 0) {
    var s = stack.pop();
    console.log("element:" + s);
}
console.log("length:" + stack.length());

function Node(element) {
    this.element = element;
    this.next = null;
}

function LinkList() {
    this.head = new Node("head");
}
LinkList.prototype = {
    insert: function (element, after) {
        var s = new Node(element);
        if (after == undefined) { //如果没有指定after,那么就直接插入到链表的最前面
            s.next = this.head.next;
            this.head.next = s;
            return true;
        } else {
            var node = this.head;
            while (node != null) {
                if (node.element == after) {
                    s.next = node.next;
                    node.next = s;
                    return true;
                }
                node = node.next;
            }
        }
        return false;
    }, remove: function (element) {
        var node = this.head;
        var preNode = null;
        while (node != null) {
            if (node.element == element) {
                preNode.next = node.next;
                return true;
            }
            preNode = node;
            node = node.next;
        }
        return false;
    }, find: function (element) {
        var node = this.head;
        while (node != null) {
            if (node.element == element) {
                break;
            }
            node = node.next;
        }
        return node;
    }, toString: function () {
        var s = "";
        var node = this.head;
        while (node != null) {
            if (node.next == null) {
                s += node.element;
            } else {
                s += node.element + " --> ";
            }
            node = node.next;
        }
        return s;
    }
};
var l = new LinkList();
l.insert("huangjacky");
l.insert("fiend", "huangjacky");
l.insert("jackyhuang", "fiend");
l.insert("abc");
var s = l.find("huangjacky");
if (s) {
    console.log("next to huangjacky is :" + s.next.element);
}
l.remove("fiend");
console.log("linklist is :" + l.toString());

  

本文转载自:http://www.cnblogs.com/huangjacky/p/4004842.html

共有 人打赏支持
huangjacky
粉丝 5
博文 19
码字总数 0
作品 0
深圳
技术主管
私信 提问
用js来实现那些数据结构及算法—目录

  首先,有一点要声明,下面所有文章的所有内容的代码,都不是我一个人独立完成的,它们来自于一本叫做《学习JavaScript数据结构和算法》(第二版),人民邮电出版社出版的这本书。github代...

zaking
2018/05/10
0
0
JavaScript数据结构与算法(链表)

去年4,5月份得时候看过Vue得源码。没记错的话其中的Cache类应该就是用链表实现的. 虽然用得不多但是作为数据结构的的重要组成部分,掌握它也是非常有必要的,下面主要以单链表进行说明. 开始...

fiveoneLei
2018/07/13
0
0
前端进阶(第一期)-调用堆栈笔记

1-1 理解 Javascript 执行上下文和执行栈 原文地址 知识点有: JavaScript程序的内部执行机制; 理解执行上下文和执行栈; 理解以上知识点有助于理解JavaScript的提升机制、作用域和闭包 执行...

xszi
2018/12/04
0
0
【北京】某电子商务网站诚聘JS高级前端工程师

岗位要求: § 不少于2年的纯粹前端开发经验,参与过丰富的JS客户端的前端开发项目; § 深入理解Web标准,高可用性/可访问性原则; § 精通Javascript语言,了解对其宿主如浏览器脚本引擎/...

sabrinazhu
2012/04/11
367
5
全栈 JavaScript 程序员的崛起

原文地址:http://thefullstack.xyz/full-stack-javascript-developer/ JavaScript 无处不在 在以前,JavaScript程序员就是前端开发者的同义词,永远与浏览器绑在一起。 但那已是昨日往事。N...

oschina
2016/06/08
7.7K
43

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部