当前位置: 首页 > 编程日记 > 正文

资料分享:送你一本《数据结构与算法JavaScript描述》电子书!

数据结构 是掌握计算机编程必须具备的技能。通常情况下,我想掌握一门编程语言所用的方法就是利用这门语言把数据结构中线性表、栈、队列、字符串、动态数字、整数集合、树、图、搜索、排序等涉及的算法全部写一遍。写完之后,基本上就把这门语言搞定了。

今天给大家分享的就是我从网上找到的利用 JavaScript 语言来实现各种数据结构的算法,希望这本电子书对学习 JavaScript 想从事前端工作的读者有益。


目录

推荐序

前言

第1章 JavaScript的编程环境和模型

  • 1.1 JavaScript环境
  • 1.2 JavaScript编程实践
  • 声明和初始化变量
  • JavaScript中的算术运算和数学库函数
  • 判断结构
  • 循环结构
  • 函数
  • 变量作用域
  • 递归
  • 1.3 对象和面向对象编程
  • 1.4 小结

第2章 数组

  • 2.1 JavaScript中对数组的定义
  • 2.2 使用数组
  • 创建数组
  • 读写数组
  • 由字符串生成数组
  • 对数组的整体性操作
  • 2.3 存取函数
  • 查找元素
  • 数组的字符串表示
  • 由已有数组创建新数组
  • 2.4 可变函数
  • 为数组添加元素
  • 从数组中删除元素
  • 从数组中间位置添加和删除元素
  • 为数组排序
  • 2.5 迭代器方法
  • 不生成新数组的迭代器方法
  • 生成新数组的迭代器方法
  • 2.6 二维和多维数组
  • 创建二维数组
  • 处理二维数组的元素
  • 参差不齐的数组
  • 2.7 对象数组
  • 2.8 对象中的数组
  • 2.9 练习

第3章 列表

  • 3.1 列表的抽象数据类型定义
  • 3.2 实现列表类
  • append:给列表添加元素
  • remove:从列表中删除元素
  • find:在列表中查找某一元素
  • length:列表中有多少个元素
  • toString:显示列表中的元素
  • insert:向列表中插入一个元素
  • clear:清空列表中所有的元素
  • contains:判断给定值是否在列表中
  • 遍历列表
  • 3.3 使用迭代器访问列表
  • 3.4 一个基于列表的应用
  • 读取文本文件
  • 使用列表管理影碟租赁
  • 3.5 练习

第4章 栈

  • 4.1 对栈的操作
  • 4.2 栈的实现
  • 4.3 使用Stack类
  • 数制间的相互转换
  • 回文
  • 递归演示
  • 4.4 练习

第5章 队列

  • 5.1 对队列的操作
  • 5.2 一个用数组实现的队列
  • 5.3 使用队列:方块舞的舞伴分配问题
  • 5.4 使用队列对数据进行排序
  • 5.5 优先队列
  • 5.6 练习

第6章 链表

  • 6.1 数组的缺点
  • 6.2 定义链表
  • 6.3 设计一个基于对象的链表
  • Node类
  • LinkedList类
  • 插入新节点
  • 从链表中删除一个节点
  • 6.4 双向链表
  • 6.5 循环链表
  • 6.6 链表的其他方法
  • 6.7 练习

第7章 字典

  • 7.1 Dictionary类
  • 7.2 Dictionary类的辅助方法
  • 7.3 为Dictionary类添加排序功能
  • 7.4 练习

第8章 散列

  • 8.1 散列概览
  • 8.2 HashTable类
  • 选择一个散列函数
  • 一个更好的散列函数
  • 散列化整型键
  • 对散列表排序、从散列表中取值
  • 8.3 碰撞处理
  • 开链法
  • 线性探测法
  • 8.4 练习

第9章 集合

  • 9.1 集合的定义、操作和属性
  • 集合的定义
  • 对集合的操作
  • 9.2 Set类的实现
  • 9.3 更多集合操作
  • 9.4 练习

第10章 二叉树和二叉查找树

  • 10.1 树的定义
  • 10.2 二叉树和二叉查找树
  • 实现二叉查找树
  • 遍历二叉查找树
  • 10.3 在二叉查找树上进行查找
  • 查找最小值和最大值
  • 查找给定值
  • 10.4 从二叉查找树上删除节点
  • 10.5 计数
  • 10.6 练习

第11章 图和图算法

  • 11.1 图的定义
  • 11.2 用图对现实中的系统建模
  • 11.3 图类
  • 表示顶点
  • 表示边
  • 构建图
  • 11.4 搜索图
  • 深度优先搜索
  • 广度优先搜索
  • 11.5 查找最短路径
  • 广度优先搜索对应的最短路径
  • 确定路径
  • 11.6 拓扑排序
  • 拓扑排序算法
  • 实现拓扑排序算法
  • 11.7 练习

第12章 排序算法

  • 12.1 数组测试平台
  • 12.2 基本排序算法
  • 冒泡排序
  • 选择排序
  • 插入排序
  • 基本排序算法的计时比较
  • 12.3 高级排序算法
  • 希尔排序
  • 归并排序
  • 快速排序
  • 12.4 练习

第13章 检索算法

  • 13.1 顺序查找
  • 查找最小值和最大值
  • 使用自组织数据
  • 13.2 二分查找算法
  • 13.3 查找文本数据
  • 13.4 练习

第14章 高级算法

  • 14.1 动态规划
  • 动态规划实例:计算斐波那契数列
  • 寻找最长公共子串
  • 背包问题:递归解决方案
  • 背包问题:动态规划方案
  • 14.2 贪心算法
  • 第一个贪心算法案例:找零问题
  • 背包问题的贪心算法解决方案
  • 14.3 练习

封面介绍


图书推荐:

1. 数据结构教程(第3版)

  • 作 者:唐发根 著
  • 出版社:北京航空航天大学出版社

2. C Primer Plus 第6版 中文版

  • 作 者:[美] 史蒂芬·普拉达 著 姜佑 译
  • 出版社:人民邮电出版社

3. C++ Primer Plus(第6版 中文版)

  • 作 者:[美] Stephen Prata 著 张海龙 译
  • 出版社:人民邮电出版社

4. Java 从入门到精通(第4版 附光盘)

  • 作 者:明日科技 著
  • 出版社:清华大学出版社

5. 剑指Offer:名企面试官精讲典型编程题(第2版)

  • 作 者:何海涛 著
  • 出版社:电子工业出版社

相关图文:

  • 如何利用 C# 爬取「京东 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「互动出版网 - 计算机图书销量榜」!
  • 如何利用 C# 爬取「中国图书网 - 计算机与互联网图书销量榜」!

下载《数据结构与算法JavaScript描述》

关注公众号,后台回复

20190410

相关文章:

Python中爬虫框架或模块的区别

Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些。 (1)爬虫框架或模块 Python自带爬虫模块:urllib、urllib2; 第三方爬虫模块:requests,aiohttp;…

SQL SERVER 2000写存储过程出现列名无效的解决方法

举一个Northwind的例子。DECLARE m_LastName nvarchar(20) DECLARE Sql varchar(256)SET m_LastName Fuller SET Sql SELECT * FROM Employees WHERE LastName char(39) m_LastName char(39) EXEC(Sql) 注意,要加上char(39)就可以了。转载于:https://www.cnblo…

如何利用 C# + Python 破解猫眼电影的反爬虫机制?

在 如何利用 C# 爬取「猫眼电影:最受期待榜」及对应影片信息! 这篇图文中可以看到猫眼电影对“本月新增想看人数” 和 “总想看人数”进行了字符集加密。 在 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息! 这篇图文中也…

ZooKeeper学习笔记1-----------安装启动

ZooKeeper是一套协作服务,主要用来构建分布式架构的应用,通过ZooKeeper我们可以安全的处理分布式应用下的局部故障问题。我们知道ZooKeeper就是Hadoop中的分布式协作服务组件。下面我们进入ZooKeeper的安装部署。 安装Zookeeper https://zookeeper.apach…

软件测试培训完就业方向怎么选择

软件测试技术在近几年的发展前景是非常好的,越来越多的人都想要学习软件测试技术,报班是大多数人的选择,但是大家对于“软件测试培训完就业方向怎么选择”这个问题比较迷茫,我们来看看下面的详细介绍。 软件测试培训完就业方向怎么…

LeetCode实战:合并两个有序链表

题目英文: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Output: 1->1->2->3->4->4 题目中…

Apache反向代理设置【转载】

编译Apache时要进行的设置./configure --enable-mods-shared"all proxy"1>修改 httpd.conf 文件中:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules…

Suricata的输出

不多说,直接上干货! 见官网 https://suricata.readthedocs.io/en/latest/output/index.html 总的来说,Suricata采集下来的数据输出分为:EVE 、 Lua Output 、 Syslog Alerting Compatibility 、 Custom http logging 、 Custo…

快速提高你的UI设计水平的一些小技巧

UI设计师这个岗位在最近几年的缺口是比较大的,很多企业都在招UI设计人员,想要学习UI设计或者提升UI设计技术的同学,可以看看小编分享的以下内容,善用这些UI设计小技巧,快速提高你的设计水平! 快速提高你的UI设计水平的…

hibernate join fetch

那天去了达内,试听了2个小时的课,刚好讲的他们的当当网项目,讲hibernate表关系映射这段来了,不过也够呛,投影仪看的眼睛点都不舒服,当时讲的也没认真听,听了个大概,就记住那个老师一…

Java IO 字节流与字符流 (三)

概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 字节流的抽象基类 InputStream,OuputStream 字符流…

LeetCode实战:两两交换链表中的节点

题目英文 Given a linked list, swap every two adjacent nodes and return its head. You may not modify the values in the list’s nodes, only nodes itself may be changed. Example: Given 1->2->3->4, you should return the list as 2->1->4->3.…

在UI设计中如何正确使用颜色

在我们进行UI设计时,颜色往往是我们表达理念重要的一点,但也是我们常常会忽视的一点。颜色其实如同语言一样,我们可以通过颜色的变化组合,来表达不同的情绪。 正确使用颜色不单能让我们吸引到客户,也能更好地表达我们的…

如何用Python做Web开发?——Django环境配置

用Python做Web开发,Django框架是个非常好的起点。如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手。 概念 最近有个词儿很流行,叫做“全栈”(full stack)。各大IT培训机构几乎都在宣传这一概念。告诉你只需要交1XXXX…

LeetCode实战:旋转链表

题目英文 Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: Input: 1->2->3->4->5->NULL, k 2 Output: 4->5->1->2->3->NULL Explanation: rotate 1 steps to the right: 5->1->2…

blog地址:

blog地址: blog地址: http://blog.csdn.net/q107770540posted on 2010-11-19 08:36 Tim_ 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/q107770540/archive/2010/11/19/1881399.html

Spring MVC框架有哪些优点

Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它与Struts2框架一样,都属于MVC框架,但其使用和性能等方面比Struts2更加优异。 Spring MVC具有如下特点: 是Spring框架的一部分,可以方便的利用Spring所提供的…

MVC+Ninject+三层架构+代码生成 -- 总结(四、數據層)

1.數據層使用了SqlSugar 庫類 。 數據層使用了SqlSugar 庫類 ,有興趣的 可以學習 http://www.codeisbug.com/Doc/8/1133,個人覺得比EF 簡單,容易上手,推薦1。 數據層使用代碼生成,所以考慮得比較多。 1.GetAllList()-…

台湾前十大科技公司拼不过三星(往后一点三星都不要买啦!)

台湾前十大科技公司拼不过三星,往后一点三星都不要买啦!本来还可以买它的内存和液晶,不过现在是一点都不能买了,再买就真反了他了! 三星像糖果也像毒药,让台湾LED类股1年涨3倍,但也让鸿海市值一夜之间消失350亿元(新台币,下同)。从来没有一刻…

技术图文:如何利用 C# 向 Access 数据库插入大量数据?

背景 通常我们在做数据分析与处理之前,需要把从网站爬取的数据或者从 甲方 系统中导出的数据存入到自己的数据库中。如果数据量小,直接利用 SQL的 Insert 语句逐条插入就好。可是数据量上万条之后,再利用这样的方法就会奇慢无比,…

Web前端面试自我介绍对话技巧注意事项

大家在学会了web前端技术后,当然是要准备找一个适合自己的web前端工作了,那么面试环节是必不可少的,有一个良好的自我介绍表述,在HR心中也能加分不少,接下来小编就为大家介绍一下Web前端面试自我介绍对话技巧注意事项。…

Android使用ListView控件问题

Android使用ListView控件问题&#xff1a; The application has stopped unexpectedly, please try again。 开发环境&#xff1a;android 1.6 最低兼容 4.0 报错代码如下&#xff1a; main.xml 代码 1 <?xml version"1.0" encoding"utf-8"?>2 <…

技术图文:如何实现 DataTable 与模型类 List 的相互转换?

通常情况下&#xff0c;我们在做工程项目的时候&#xff0c;需要把待处理的数据存储在数据库中。 通过 SQL 的 Select 语句很容易把查询的结果以 DataTable 的方式得到&#xff0c;但在对 DateTable 中的数据进行进一步的检索时远远没有模型类 List<T> 方便。 所以&…

SQL server 基本语句

SQL server数据库基本语句一、实验要求&#xff1a;1、 查询student表中所有学生的信息select * from student如图所示2、查询student表中“姓名”“所在班级”和“成绩”列内容select 姓名&#xff0c;所在班级&#xff0c;成绩 from student如图所示3、查询student表…

Python中if条件判断语句怎么用?

俗话说“不积跬步无以至千里”。学习了Python的基本语法后&#xff0c;接下来我们学习Python常的if条件判断语句。 if语句是最简单的条件判断语句&#xff0c;它可以控制程序的执行流程&#xff0c;其使用格式如下: if判断条件: 满足条件时要做的事情1… 满足条件时要做的事情2…

Arcmap技巧总结

Arcmap技巧总结 1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置中有3个选项&#xff0c; vertex edge end 分…

Spring Web MVC(一)

概述Spring Web MVC框架的特点五大核心组件编程步骤 五大核心组件DispatcherServlet前端控制器WebApplicationContext中特殊的bean处理过程 HandlerMapping 处理映射Spring中最常用的两个处理器映射BeanNameUrlHandlerMappingSimpleUrlHandlerMapping拦截器HandlerInterceptor概…

技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证

背景 最近&#xff0c;自己在技术精进方向上有所犹豫&#xff0c;是往"网络渗透"的方向走呢&#xff1f;还是往"量化交易"的方向走&#xff1f; 如果选择精进“网络渗透”&#xff0c;就需要学习各种Web渗透技术、客户端渗透技术、移动环境渗透技术、社会…

零基础学习java软件开发攻略

Java是主流开发语言&#xff0c;应用普遍。Spring Boot是Java开发时常用框架&#xff0c;有非常丰富的组件和易用的功能。实际开发工作中涉及到的知识点比较多&#xff0c;将它们分门别类&#xff0c;专题攻关&#xff0c;由点到面&#xff0c;学习效率非常高。 软件开发系统学…

Linux--档案/目录 权限及修改

首先所有权限对于三类用户分别设定&#xff1a; User(所有者) / Group(组群) / Others(其他)。 权限也是有三种&#xff1a;Read / Write / eXecute&#xff0c;这三种权限对于文档和目录有不同的意义。 1. 对于文档&#xff1a; Read&#xff1a;可以查看文档的内容 Write&…