Ⅰ 数据结构与算法分析2.表、栈、队列、字符串
线性表是 n 个数据元素的有限队列,同一线性表中的元素必定具有相同的特性,即属于同一数据对象,相邻数据元素之间存在着序偶关系。
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,通常是用数组实现。在java语言中,主要是 java.util.ArrayList 实现。
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的),所以对数据元素而言,除了存储其本身的信息之外,还需要一个指示其后继数据元素的信息。
栈(Stack)是限定只能在表尾进行插入或删除的线性表。对栈来说, 表尾称为栈顶,表头称为栈底 。栈又称为后进先出线性表(LIFO,Last In First Out)。Java中由于 java.util.Stack 和 java.util.Vector 先天的设计问题,并不推荐使用;一般使用LinkedList来当作栈。
[图片上传失败...(image-b267ad-1582731953399)]
[图片上传失败...(image-72fd67-1582731953399)]
假设一个算术表达式中可以包含两种括号:圆括号和方括号,且这两种括号可按任意的次序嵌套使用,编写判别给定表达式中所含括号是否正确配对出现的算法。
迷宫问题是栈的典型应用,栈通常也与回溯算法连用,回溯算法的基本描述是:
尚需说明一点的是,所谓当前位置可通,指的是未曾走到过的通道块,即要求该方块位置不仅是通道块,而且既不在当前路径上(否则所求路径就不是简单路径),也不是曾经纳入过路径的通道块(否则只能在死胡同内转圈)。
为实现算符优先算法,可以使用两个工作栈。一个称做OPTR,用以寄存运算符;另一个称做OPND,用以寄存操作数或运算结果。算法的基本思想如下:
(1) 首先置操作数栈OPND为空栈,表达式起始符"#"为运算符栈OPTR的栈底元素;
(2) 依次读入表达式中每个字符,若是操作数则进OPND栈,若是运算符则和OPTR的栈顶元素符比较优先权后作相应操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为"#")。
一个直接调用自己或通过一系列的调用语句间接地调用自己的函数。
假设有3个分别命名为X、Y和Z的塔座,在塔座X上插有n阶Hanoi塔个直径大小各不相同、依小到大编号1,2,...,n的圆盘。现要求将X轴上的n阶Hanoi塔个圆盘移至塔座Z上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则:
用链表表示的队列简称为链队列。一个链队列显然需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。和线性表的单链表一样,为了操作方便起见,我们也给链队列添加一个 头结点 ,并令头指针指向头结点。由此,空的链队列的判断条件为头指针和尾指针均指向头结点,如图所示:
在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进:无论插入或删除,一旦rear指针增1或front指针增1时超出了所分配的队列空间,就让它指向这片连续空间的起始位置。自己真从MaxSize-1增1变到0,可用取余运算rear%MaxSize和front%MaxSize来实现。这实际上是把队列空间想象成一个环形空间,环形空间中的存储单元循环使用,用这种方法管理的队列也就称为循环队列。
在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。因此,队列判空的条件时front=rear,而队列判满的条件时front=(rear+1)%MaxSize。队空和队满的情况如图:
双端队列,是限定插入和删除操作在表的两端进行的线性表,尽管双端队列看起来比栈和队列灵活,但实际上在应用程序中远不及栈和队列有用。
Ⅱ 《挑战程序设计竞赛2算法和数据结构》pdf下载在线阅读全文,求百度网盘云资源
《挑战程序设计竞赛2 算法和数据结构》([日]渡部有隆)电子书网盘下载免费在线阅读
链接: https://pan..com/s/1B5oEwukMNtPgrWcmM05upQ
书名:挑战程序设计竞赛2 算法和数据结构
作者:[日]渡部有隆
译者:支鹏浩
豆瓣评分:8.3
出版社:人民邮电出版社
出版年份:2016-9-1
页数:404
内容简介:
本书分为准备篇、基础篇和应用篇三大部分,借助在线评测系统Aizu Online Judge以及大量例题,详细讲解了算法与复杂度、初等和高等排序、搜索、递归和分治法、动态规划法、二叉搜索树、堆、图、计算几何学、数论等与程序设计竞赛相关的算法和数据结构,既可以作为挑战程序设计竞赛的参考书,也可以用来引导初学者系统学习算法和数据结构的基础知识。本书适合所有程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。
作者简介:
渡部有隆(作者)
出生于1979年,计算机理工学博士。会津大学计算机理工学部信息系统学部门副教授。专业领域为可视化编程语言。AIZU ONLINE JUDGE开发者。
Ozy(审校)
本名冈田佑一,出生于日本大阪的短码高手。他花费相当长的时间提升短码编程技术,进而将其发展成一种技能,曾获得程序设计大赛的冠军。他开办过程序设计方面的培训班,目前致力于数学教育和程序设计师的培养工作。曾着有《短码之美:变成达人的心得技法》(人民邮电出版社)。
秋叶拓哉(审校)
2011年考入东京大学研究生院。以iwi的昵称活跃在程序设计竞赛中。TopCoder评级好成绩为世界第四(2013年)。《挑战程序设计竞赛(第2版)》(人民邮电出版社)作者之一。
Ⅲ 《数据结构与算法分析( C++版)(第二版)国外计算机科学教材系列》txt下载阅读,求百度云资源
《数据结构与算法分析(C++版)(第二版)》([美] Clifford A.Shaffer)电子书网盘下载免费在线阅读
链接: https://pan..com/s/1DBcf3gNP9u5VdIJWPS5n6w
书名:数据结构与算法分析(C++版)(第二版)
作者:[美] Clifford A.Shaffer
译者:张铭
豆瓣评分:7.1
出版社:电子工业出版社
出版年份:2002-6
页数:327
内容简介:
本书采用程序员最爱用的面向对象C+ +语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种类型的数据结构和排序、检索的各种方法。作者非常注意对每一种数据结构不同存储方法及有关算法进行分析比较。书中还引入了一些比较高级的数据结构与先进的算法分析技术,并介绍了可计算性理论的一般知识。本版的重要改进在于引入了参数化的模板,从而提高了算法中数据类型的通用性,支持高效的代码重用。本书概念清楚、逻辑性强、内容新颖,可作为大专院校计算机软件专业与计算机应用专业学生的教材和参考书,也可供计算机工程技术人员参考。
作者简介:
Associate Professor
2000A Torgerson
Department of Computer Science
Virginia Tech
Blacksburg, VA 24061
Ⅳ 《学习JavaScript数据结构与算法(第3版)》pdf下载在线阅读全文,求百度网盘云资源
《学习JavaScript数据结构与算法(第3版)》([巴西]洛伊安妮·格罗纳)电子书网盘下载免费在线阅读
链接:
书名:学习JavaScript数据结构与算法(第3版)
作者:[巴西]洛伊安妮·格罗纳
译者:吴双
豆瓣评分:8.4
出版社:人民邮电出版社
出版年份:2019-5
页数:308
内容简介:
本书首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。
作者简介:
洛伊安妮·格罗纳(Loiane Groner)
花旗银行软件开发经理,负责海外项目的开发和团队管理;原IBM公司系统分析师及团队负责人;巴西坎皮纳斯Java用户组(CampinasJUG)协调人;Sencha和Java技术推广者,通过博客为软件开发社区撰稿,发表关于IT职业发展和常用开发技术的文章和视频,并经常受邀在各大技术会议上做报告。另着有《精通Ext JS》等书。
Ⅳ 《数据结构与算法JavaScript描述》pdf下载在线阅读,求百度网盘云资源
《数据结构与算法JavaScript描述》([美] Michael McMillan)电子书网盘下载免费在线阅读
资源链接:
链接:
书名:数据结构与算法JavaScript描述
作者:[美] Michael McMillan
译者:王群锋
豆瓣评分:6.6
出版社:人民邮电出版社
出版年份:2014-8
页数:216
内容简介:
通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。
本书主要内容如下。
数组和列表:最常用的数据结构。
栈和队列:与列表类似但更复杂的数据结构。
链表:如何通过它们克服数组的不足。
字典:将数据以键-值对的形式存储。
散列:适用于快速查找和检索。
集合:适用于存储只出现一次的元素。
二叉树:以层级的形式存储数据。
图和图算法:网络建模的理想选择。
算法:包括排序或搜索数据的算法。
高级算法:动态规划和贪心算法。
作者简介:
作者简介:
Michael McMillan
作为大学老师和程序员,曾编写过多部受到好评的数据结构与算法图书,包括Data Structures and Algorithms Using C#、Data Structures and Algorithms Using Visual Basic.NET,以及其他计算机教程,如Object-Oriented Programming with Visual Basic.NET、C++ Programming: An Introction、Java Programming Tutorial、Perl from the Ground Up等。Michael现在阿肯色州北小石城普瓦斯基技术学院当讲师,教授计算机信息系统。他还是北小石城阿肯色大学的兼职讲师,教授信息科学。在做讲师之前,他曾是阿肯色儿童医院的一名程序设计师/分析师,负责统计计算和数据分析。
译者简介:
王群锋
1981年生于陕西省富平县桥西大队三里村,2004年毕业于西安电子科技大学。毕业后当了一名程序员,现居西安,在IBM西安研发中心从事下一代统计预测软件的开发工作。
杜欢
淘宝网高级技术专家,2012年加入淘宝,曾就职于雅虎台湾及CISCO。对前端架构、前后端协作有自己的见解,专注于Web产品设计、可用性实施,热爱标准化。
Ⅵ 《数据结构与算法分析Java语言描述(英文版·第3版)》pdf下载在线阅读,求百度网盘云资源
《数据结构与算法分析》(韦斯 (Mark Allen Weiss))电子书网盘下载免费在线阅读
资源链接:
链接:
书名:数据结构与算法分析
作者:韦斯 (Mark Allen Weiss)
出版社:机械工业出版社
出版年份:2013-2-1
页数:614
内容简介:
本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。
随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书将算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,并细致讲解精心构造程序的方法,内容全面、缜密严格。
第3版的主要更新如下:
第4章包含AVL树删除算法的实现。
第5章进行了全面修订和扩充,现在包含两种较新的算法—cuckoo散列和hopscotch散列。
第7章包含基数排序的相关内容,并给出了下界证明。
第12章增加了后缀树和后缀数组的相关材料,包括Karkkainen和Sanders的线性时间后缀数组构造算法。
更新书中的代码,使用了Java 7中的菱形运算符。
作者简介:
Mark Allen Weiss佛罗里达国际大学计算与信息科学学院教授、副院长,本科教育主任和研究生教育主任。他于1987年获得普林斯顿大学计算机科学博士学位,师从Bob Sedgewick。 他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000—2004)。他的主要研究兴趣是数据结构、算法和教育学。
Ⅶ 数据结构与算法(中文版) PDF 完整版下载
《数据结构与算法》涉及计算机中数据的组织、重组、移动、使用和提取等操作方法,及相关的数学分析。《数据结构与算法》所选的主题基于以下几个朴素的原则。第一,本书只讲解实用的技术,而忽略一些理论上非常虽然出色、但不太实用的算法。第二,本书既包含经典的方法,也包括最近发现的方法;这种选择是基于内在的简便性、广泛的应用性和潜在的使用性等标准,而不是无遗漏地包含前人书籍的目录。第三,所有讲述的方法基本上都会对应的分析。本书的一个主要的目的就是介绍一些相对简练和非技术化的算法分析,但同时也能体现出其重要的性能特征。就像在机械工程这门课程中,扩展性是重要的一课:同样满足某种规模结构的方法,当规模扩大十倍以后不再适合。
目录:
前言
第1章 导言
第2章 算法分析
第3章 线性表
第4章 树
第5章 数组与字符串
第6章 集合的表和树实现
第7章 动态字典的树结构
第8章 数据集合
第9章 特殊操作集合
第10章 内存管理
第11章 排序
第12章 图
第13章 数据结构工程
链接:
http://www.shujuyr.com/533.html
Ⅷ 求JAVA.数据结构.算法学习视频百度云。
《数据结构课程精讲教案合集-复旦大学(共计1061页).pdf 》网络网盘免费资源下载
链接: https://pan..com/s/15uwjtHgKKzZdheWFQC21pQ