VIP会员
作者:CSDN
出版社:CSDN《程序员》
ISBN:1111111111117
VIP会员免费
(仅需0.8元/天)
¥ 40000.0
温馨提示: 价值40000元的1000本电子书,VIP会员随意看哦!
电子书推荐
-
数据结构与算法分析-Java语言描述(第2版)_1_2 评分:
目录回到顶部↑ 出版者的话 译者序 前言 第1章 引论 1.1 本书讨论的内容 1.2 数学知识复习 1.2.1 指数 1.2.2 对数 1.2.3 级数 1.2.4 模运算 1.2.5 证明的方法 1.3 递归简论 1.4 实现泛型特性构件pre-java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱 . 1.5.3 带有限制的通配符 1.5.4 泛型static方法 1.5.5 类型限界 1.5.6 类型擦除 1.5.7 对于泛型的限制 1.6 函数对象 小结 练习 参考文献 第2章 算法分析 2.1 数学基础 2.2 模型 2.3 要分析的问题 2.4 运行时间计算 2.4.1 一个简单的例子 2.4.2 一般法则 2.4.3 最大子序列和问题的求解 2.4.4 运行时间中的对数 2.4.5 检验你的分析 2.4.6 分析结果的准确性 小结 练习 参考文献 第3章 表、栈和队列 3.1 抽象数据类型 3.2 表adt 3.2.1 表的简单数组实现 3.2.2 简单链表 3.3 javacollectionsapi中的表 3.3.1 collection接口 3.3.2 iterator接口 3.3.3 list接口、arraylist类和linkedlist类 3.3.4 例:remove方法对linkedlist类的使用 3.3.5 关于listiterator接口 3.4 arraylist类的实现 3.4.1 基本类 3.4.2 迭代器、java嵌套类和内部类 3.5 linkedlist类的实现 3.6 栈adt 3.6.1 栈模型 3.6.2 栈的实现 3.6.3 应用 3.7 队列adt 3.7.1 队列模型 3.7.2 队列的数组实现 3.7.3 队列的应用 小结 练习 第4章 树 4.1 预备知识 4.1.1 树的实现 4.1.2 树的遍历及应用 4.2 二叉树 4.2.1 实现 4.2.2 例子:表达式树 4.3 查找树adt——二叉查找树 4.3.1 contains方法 4.3.2 findmin方法和findmax方法 4.3.3 insert方法 4.3.4 remove方法 4.3.5 平均情况分析 4.4 avl树 4.4.1 单旋转 4.4.2 双旋转 4.5 伸展树 4.5.1 一个简单的想法(不能直接使用) 4.5.2 展开 4.6 树的遍历 4.7 b树 4.8 标准库中的集合与映射 4.8.1 关于set接口 4.8.2 关于map接口 4.8.3 treeset类和treemap类的实现 4.8.4 使用多个映射的例 小结 练习 参考文献 第5章 散列 5.1 一般想法 5.2 散列函数 5.3 分离链接法 5.4 不用链表的散列表 5.4.1 线性探测法 5.4.2 平方探测法 5.4.3 双散列 5.5 再散列 5.6 标准库中的散列表 5.7 可扩散列 小结 练习 参考文献 第6章 优先队列(堆) 6.1 模型 6.2 一些简单的实现 6.3 二叉堆 6.3.1 结构性质 6.3.2 堆序性质 6.3.3 基本的堆操作 6.3.4 其他的堆操作 6.4 优先队列的应用 6.4.1 选择问题 6.4.2 事件模拟 6.5 d-堆 6.6 左式堆 6.6.1 左式堆性质 6.6.2 左式堆操作 6.7 斜堆 6.8 二项队列 6.8.1 二项队列结构 6.8.2 二项队列操作 6.8.3 二项队列的实现 6.9 标准库中的优先队列 小结 练习 参考文献 第7章 排序 7.1 预备知识 7.2 插入排序 7.2.1 算法 7.2.2 插入排序的分析 7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 7.7.2 分割策略 7.7.3 小数组 7.7.4 实际的快速排序例程 7.7.5 快速排序的分析 7.7.6 选择问题的线性期望时间算法 7.8 排序算法的一般下界 7.9 桶式排序 7.10 外部排序 7.10.1 为什么需要一些新的算法 7.10.2 外部排序模型 7.10.3 简单算法 7.10.4 多路合并 7.10.5 多相合并 7.10.6 替换选择 小结 练习题 参考文献 第8章 不相交集类 8.1 等价关系 8.2 动态等价性问题 8.3 基本数据结构 8.4 灵巧求并算法 8.5 路径压缩 8.6 路径压缩和按秩求并的最坏情形 8.7 一个应用 小结 练习题 参考文献 第9章 图论算法 9.1 若干定义 9.2 拓扑排序 9.3 最短路径算法 9.3.1 无权最短路径 9.3.2 dijkstra算法 9.3.3 具有负边值的图 9.3.4 无圈图 9.3.5 所有点对最短路径 9.3.6 最短路径的例子 9.4 网络流问题 9.5 最小生成树 9.5.1 prim算法 9.5.2 kruskal算法 9.6 深度优先搜索的应用 9.6.1 无向图 9.6.2 双连通性 9.6.3 欧拉回路 9.6.4 有向图 9.6.5 查找强分支 9.7 np完全性介绍 9.7.1 难与易 9.7.2 np类 9.7.3 np完全问题 小结 练习 参考文献 第10章 算法设计技巧 10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼编码 10.1.3 近似装箱问题 10.2 分治算法 10.2.1 分治算法的运行时间 10.2.2 最近点问题 10.2.3 选择问题 10.2.4 一些算术问题的理论改进 10.3 动态规划 10.3.1 用一个表代替递归 10.3.2 矩阵乘法的顺序安排 10.3.3 最优二叉查找树 10.3.4 所有点对最短路径 10.4 随机化算法 10.4.1 随机数发生器 10.4.2 跳跃表 10.4.3 素性测试 10.5 回溯算法 10.5.1 收费公路重建问题 10.5.2 博弈 小结 练习 参考文献 第11章 摊还分析 11.1 一个无关的智力问题 11.2 二项队列 11.3 斜堆 11.4 斐波那契堆 11.4.1 切除左式堆中的节点 11.4.2 二项队列的懒惰合并 11.4.3 斐波那契堆操作 11.4.4 时间界的证明 11.5 伸展树 小结 练习 参考文献 第12章 高级数据结构及其实现 12.1 自顶向下伸展树 12.2 红黑树 12.2.1 自底向上的插入 12.2.2 自顶向下红黑树 12.2.3 自顶向下的删除 12.3 确定性跳跃表 12.4 aa树 12.5 treap树 12.6 kd树 12.7 配对堆 小结 练习 参考文献 索引 ↑折 叠
上传时间:2011-07 大小:19.07MB
- 1.60MB
数据结构与算法-Java语言版
2009-05-27本书系统讲解数据结构和算法,并分析了算法的复杂性。本书选择Java语言以面向对象的方式描述数据结构,还特别强调了封装和分解的信息隐藏原理。主要内容包括:面向对象编程的基本原理,判定算法效率的方法,堆栈、队列及其应用,对于多种递归的详细讨论,二叉树、B树、2-4树等的查找和遍历等,分析排序、散列等数据结构的应用,图、NP完整性,数据压缩算法、存储管理技术以及自动机理论和字符串匹配等算法。. 本书适合作为高等院校计算机专业的教材,也是计算机算法方面的重要参考书。.. 数据结构和算法课程是计算机科学教育的核心内容,本书提供了该领域必备的知识。根据当前的设计和实现范例,本书以面向对象的方式描述数据结构,深入浅出地讲解了相关的难点。Drozdek强调了数据结构和算法之间的关系,分析了算法的复杂性,还讲解了增强封装和分解的信息隐藏原理,对递归方法和递归进行了清晰、详尽的阐述。 本书第1版取材新颖,被很多学校采用为教学参考书。第2版在延续了第1版理论结合实际的风格的同时,在理论上更精深了一层,添加了很多数据结构的经典问题与新的思想,比如NP完整性、图论中的团问题以及结合自动机理论探讨的字符串匹配技术等。...
- 63.38MB
数据结构与算法分析(java语言描述)中文第二版以及习题答案
2019-06-21数据结构与算法分析(java语言描述)中文第二版 以及习题答案(英文的) 数据结构与算法(java语言描述)中文第二版 以上3本书都在,给学习数据结构的java开发人员学习。
- 3.92MB
data structures and problem solving using java
2014-05-26全名: data structures and problem solving using java
- 20.17MB
数据结构与算法经典问题解析 Java语言描述
2017-09-12数据结构与算法经典问题解析 Java语言描述数据结构与算法经典问题解析 Java语言描述数据结构与算法经典问题解析 Java语言描述数据结构与算法经典问题解析 Java语言描述数据结构与算法经典问题解析 Java语言描述数据结构与算法经典问题解析 Java语言描述
- 1.55MB
数据结构与算法(JAVA语言版)-中文
2018-11-12本文档主要介绍 java 的基本算法,很适合初学算法与结构的编程者学习,所以将本文档分享给大家,以供学习!
- 1.51MB
数据结构与算法分析(Java语言描述)习题答案(第三版).docx
2021-06-24在《数据结构与算法分析(Java语言描述)》(第三版)这本教材中,我们看到涉及了关于数据结构、算法以及程序设计的基础概念。在给出的文档中,部分题目和答案涵盖了递归、数学推理、文件处理以及计算理论等多个方面...
- 57KB
数据结构与算法分析-Java语言描述(第3版)源码.rar
2021-03-18《数据结构与算法分析-Java语言描述(第3版)源码》是计算机科学领域的一本经典教材,主要关注如何用Java语言实现各种数据结构和算法。这本书的第三版不仅涵盖了基本的数据结构如数组、链表、栈、队列、树、图,还深入...
- 2.11MB
数据结构与算法分析——java语言描述(第二版) 习题答案
2019-01-26数据结构与算法分析——Java语言描述(第二版)是普林斯顿大学Mark Allen Weiss的经典之作,但是网上很少能找到Java描述第二版的课后习题,连作者的个人主页也明确表示不提供课后习题,只能到出版商那里去索取,这个...
- 28.87MB
算法与数据结构(JAVA语言描述
2014-09-25数据结构与算法分析:Java语言描述 第2版 》是国外数据结构与算法分析方面的经典教材 使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计) 随着计算机速度的...
- 2.75MB
数据结构与算法:语言描述(中英文)
2012-02-06第1章向读者介绍数据结构作为数据集合的概念。介绍线性和非线性集合的概念。示范说明了Collection类。本章还介绍泛型编程的概念。泛型编程允许程序员编写一个类或一种方法,并且把它用于众多数据类型。泛型编程是C#语言一种重要的新特性(在C#2.0以及更高版本中可用)。这种特性是如此重要以至于在System.Collections.Generic命名空间中存在一个专门的泛型数据结构库。当数据结构具有在此库中能找到的泛型实现时,就会讨论它的用途。本章结尾处介绍了衡量书中讨论的数据结构与算法性能的方法。 第2章提供了数组构造方法的回顾,并连同示例说明了Array类的特征。Array类把许多与数组相关的函数(UBound函数、LBound函数等等)封装到单独一个包中。ArrayLists是数组的一种特殊类型,它支持动态地调整容量。 第3章是对基础排序算法的介绍,例如冒泡排序和插入排序。而第4章则研究了用于内存查找的最基本算法,顺序查找和二叉查找。 第5章探讨了两种经典的数据结构:堆栈和队列。本章节强调的重点是这些数据结构在解决日常数据处理问题中的实际应用。第6章讲述了BitArray类。这种类可以用于有效地表示大量整数值,比如测试成绩。 数据结构的书中通常不包含字符串,但是第7章介绍了字符串、String类和StringBuilder类。这是因为在C#语言中许多的数据处理是在字符串上执行的,读者应该接触基于这两种类的特殊方法。第8章分析了用于文本处理和模式匹配的正则表达式的使用。与较传统的字符串函数和方法相比,正则表达式常常会提供更强大更有效的处理。 第9章向读者介绍作为数据结构的字典的使用。字典和基于字典的不同数据结构把数据作为键/值对来存储。本章向读者说明了如何创建基于DictionaryBase类的他或她自己的类。DictionaryBase类是一个抽象类。第10章包括散列表和HashTable类。HashTable类是字典的一种特殊类型,它用散列算法对内部数据进行存储。 链表作为另外一种经典的数据结构是在第11章介绍。链表在C#语言中不像在C++这样基于指针的语言中那样重要,但是它始终在C#编程中发挥作用。第12章为读者介绍另一种经典数据结构——二叉树。二叉查找树作为二叉树的特殊类型将是本章的主要内容。其他二叉树类型在第15章进行介绍。 第13章向读者说明在集合中存储数据的方法。这种方法在数据结构只存储唯一数据值的情况下是很实用的。第14章涵盖了高级排序算法,包括流行且高效的快速排序算法。此算法是大多数在.NET框架库中实现的排序程序的基础。第15章会看到三种数据结构。在无法使用二叉查找树的时候,这三种数据结构证明对查找是很有用的。他们是:AVL树、红黑树和跳跃表。 第16章讨论了图以及图的算法。图在表示许多不同的数据类型时非常有用,特别是网络的情况。最后,第17章向读者介绍真正的算法设计技巧是什么:动态算法和贪心算法。
- 76KB
数据结构(Java版)(第2版)习题解答
2011-08-16第0章 Java程序设计基础 1 【习0.1】 实验0.1 哥德巴赫猜想。 1 【习0.2】 实验0.2 杨辉三角形。 1 【习0.3】 实验0.3 金额的中文大写形式。 1 【习0.4】 实验0.4 下标和相等的数字方阵。 1 【习0.5】 实验0.5 找出一个二维数组的鞍点 2 【习0.6】 实验0.6 复数类。 2 【习0.7】 实验0.8 图形接口与实现图形接口的类 2 第1章 绪论 3 【习1.1】 实验1.1 判断数组元素是否已按升序排序。 3 【习1.2】 实验1.3 用递归算法求两个整数的最大公因数。 3 第2章 线性表 5 【习2.1】 习2-5 图2.19的数据结构声明。 5 【习2.2】 习2-6 如果在遍历单链表时,将p=p.next语句写成p.next=p,结果会怎样? 5 【习2.3】 实验2.2 由指定数组中的多个对象构造单链表。 5 【习2.4】 实验2.2 单链表的查找、包含、删除操作详见8.2.1。 5 【习2.5】 实验2.2 单链表的替换操作。 6 【习2.6】 实验2.2 首尾相接地连接两条单链表。 6 【习2.7】 实验2.2 复制单链表。 6 【习2.8】 实验2.2 单链表构造、复制、比较等操作的递归方法。 7 【习2.9】 建立按升序排序的单链表(不带头结点)。 8 【习2.10】 实验2.6 带头结点的循环双链表类,实现线性表接口。 10 【习2.11】 实验2.5 建立按升序排序的循环双链表。 14 第3章 栈和队列 17 【习3.1】 习3-5 栈和队列有何异同? 17 【习3.2】 能否将栈声明为继承线性表,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.3】 能否用一个线性表作为栈的成员变量,入栈方法是add(0,e),出栈方法是remove(0)?为什么? 17 【习3.4】 能否将队列声明为继承线性表,入队方法是add(e),出队方法是remove(0)?为什么? 17 第4章 串 18 【习4.1】 实验4.6 找出两个字符串中所有共同的字符。 18 【习4.2】 习4-9(1) 已知目标串为"abbaba"、模式串为"aba",画出其KMP算法的匹配过程,并给出比较次数。 18 【习4.3】 习4-9(2) 已知target="ababaab"、pattern="aab",求模式串的next数组,画出其KMP算法的匹配过程,并给出比较次数。 18 第5章 数组和广义表 20 【习5.1】 求一个矩阵的转置矩阵。 20 第6章 树和二叉树 21 【习6.1】 画出3个结点的各种形态的树和二叉树。 21 【习6.2】 找出分别满足下面条件的所有二叉树。 21 【习6.3】 输出叶子结点。 21 【习6.4】 求一棵二叉树的叶子结点个数。 22 【习6.5】 判断两棵二叉树是否相等。 22 【习6.6】 复制一棵二叉树。 23 【习6.7】 二叉树的替换操作。 23 【习6.8】 后根次序遍历中序线索二叉树。 24 第7章 图 25 第8章 查找 26 【习8.1】 实验8.1 顺序表的查找、删除、替换、比较操作。 26 【习8.2】 实验8.2 单链表的全部替换操作。 28 【习8.3】 实验8.2 单链表的全部删除操作。 28 【习8.4】 折半查找的递归算法。 29 【习8.5】 二叉排序树查找的递归算法。 29 【习8.6】 二叉排序树插入结点的非递归算法。 30 【习8.7】 判断一棵二叉树是否为二叉排序树。 31 第9章 排序 32 【习9.1】 判断一个数据序列是否为最小堆序列。 32 【习9.2】 归并两条排序的单链表。 32 【习9.3】 说明二叉排序树与堆的差别。 34
- 3.16MB
数据结构演示软件
2013-06-02数据结构算法演示(Windows版) 使 用 手 册 一、 功能简介 本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行过程中栈的变化状况。整个系统使用菜单驱动方式, 每个菜单包括若干菜单项。每个菜单项对应一个动作或一个子菜单。系统一直处于选择菜单项或执行动作状态, 直到选择了退出动作为止。 二、 系统内容 本系统内含84个算法,分属13部分内容,由主菜单显示,与《数据结构》教科书中自第2章至第11章中相对应。各部分演示算法如下: 1. 顺序表 (1)在顺序表中插入一个数据元素(ins_sqlist) (2)删除顺序表中一个数据元素(del_sqlist) (3)合并两个有序顺序表(merge_sqlist) 2. 链表 (1)创建一个单链表(Crt_LinkList) (2)在单链表中插入一个结点(Ins_LinkList) (3)删除单链表中的一个结点(Del_LinkList) (4)两个有序链表求并(Union) (5)归并两个有序链表(MergeList_L) (6)两个有序链表求交(ListIntersection_L) (7)两个有序链表求差(SubList_L) 3. 栈和队列 (1)计算阿克曼函数(AckMan) (2)栈的输出序列(Gen、Perform) (3)递归算法的演示 汉诺塔的算法(Hanoi) 解皇后问题的算法(Queen) 解迷宫的算法(Maze) 解背包问题的算法(Knap) (4)模拟银行(BankSimulation) (5)表达式求值(Exp_reduced) 4. 串的模式匹配 (1)古典算法(Index_BF) (2)求Next 函数值(Get_next)和按Next 函数值进行匹配 (Index_KMP(next)) (3)求 Next 修正值(Get_nextval)和按 Next 修正值进行匹配(Index_KMP(nextval)) 5. 稀疏矩阵 (1)矩阵转置 (Trans_Sparmat) (2)快速矩阵转置 (Fast_Transpos) (3)矩阵乘法 (Multiply_Sparmat) 6. 广义表 (1)求广义表的深度(Ls_Depth) (2)复制广义表(Ls_Copy) (3)创建广义表的存储结构(Crt_Lists) 7. 二叉树 (1)遍历二叉树 二叉树的线索化 先序遍历(Pre_order) 中序遍历(In_order) 后序遍历(Post_order) (2) 按先序建二叉树(CrtBT_PreOdr) (3) 线索二叉树 二叉树的线索化 生成先序线索(前驱或后继) (Pre_thre) 中序线索(前驱或后继) (In_thre) 后序线索(前驱或后继) (Post_thre) 遍历中序线索二叉树(Inorder_thlinked) 中序线索树的插入(ins_lchild_inthr)和删除(del_lchild_inthr)结点 (4)建赫夫曼树和求赫夫曼编码(HuffmanCoding) (5)森林转化成二叉树(Forest2BT) (6)二叉树转化成森林(BT2Forest) (7)按表达式建树(ExpTree)并求值(CalExpTreeByPostOrderTrav) 8. 图 (1)图的遍历 深度优先搜索(Travel_DFS) 广度优先搜索(Travel_BFS) (2)求有向图的强连通分量(Strong_comp) (3)有向无环图的两个算法 拓扑排序(Toposort) 关键路径(Critical_path) (4)求最小生成树 普里姆算法(Prim) 克鲁斯卡尔算法(Kruscal) (5)求关节点和重连通分量(Get_artical) (6)求最短路径 弗洛伊德算法(shortpath_Floyd) 迪杰斯特拉算法(shortpath_DIJ) 9. 存储管理 (1)边界标识法 (Boundary_tag_method) (2)伙伴系统 (Buddy_system) (3)紧缩无用单元 (Storage_compaction) 10. 静态查找 (1)顺序查找(Search_Seq) (2)折半查找 (Serch_Bin) (3)插值查找 (Search_Ins) (4)斐波那契查找 (Search_Fib) (5)次优查找树(BiTree_SOSTree) 11. 动态查找 (1)在二叉排序树上进行查找(bstsrch)、插入结点(ins_bstree)和删除结点(del_bstree) (2)在二叉平衡树上插入结点(ins_AVLtree) 和删除结点(del_AVLtree) (3)在 B-树上插入结点(Ins_BTree) 和 删除结点(Del_BTree) (4)在 B+树上插入结点(Ins_PBTree) 和 删除结点(Del_PBTree) 12. 内部排序 (1)简单排序法 直接插入排序(Insert_sort) 表插入排序(内含插入(Ins_Tsort) 重排(Arrange)两个算法) 起泡排序(BubbleSort) 简单选择排序(SelectSort) (2)复杂排序法 堆排序(HeapSort) 快速排序(QuickSort) 锦标赛排序(Tournament) (3)其他 快速地址排序(QkAddrst) 基数排序(RadixSort) 13. 外部排序 (1)多路平衡归并排序(K-Merge) (2)置换-选择排序(Repl_Selection) 三、 运行环境 1. 硬件:Pentium100以上PC机。 2. 软件:Windows95及以上版本的操作系统。 四、 运行 本系统的执行文件为DSDEMOW.EXE。 五、 如何使用本课件 读者可以利用鼠标移动光标选择“演示算法”或“菜单命令”来控制课件的运行过程。 1. 课件的演示算法菜单为页式菜单。第一级菜单中的各项与上述“系统内容”中各大项相对应,读者运行“算法演示课件”后, 即进入“算法选择一级菜单”画面,此时可移动光标进行选择,当光标所在菜单项改为红色时,单击鼠标即进入“算法选择二级菜单”,进行相同操作之后,或进入算法选择三级菜单(如图1所示),或进入算法演示的执行状态(如图2所示)。 图1 图2 在算法选择菜单画面中,形如 的图标意为尚有下级菜单,形如 的图标则表示将直接进入算法演示状态。此时也可直接单击一级菜单或二级菜单的标题直接返回之,注意:菜单右侧上方的“退出”按钮意为退出整个演示课件。 2. 算法演示执行状态下的屏幕分为三部分:第一行为“标题行”,第二行为“菜单命令”,以下为算法演示屏上各菜单的说明。 菜单命令中各项自左至右的功能分别为: 数据——设置算法演示的数据(数据结构)。 调用栈——察看当前函数(或过程)嵌套或递归的历程。 说明——察看算法说明。 暂停——中断演示过程。 执行——连续执行算法直至所设断点或至算法执行完毕。 单步——执行一行算法,遇到子程序调用时,连续执行完子程序。 跟踪——执行一行算法,遇到子程序调用时,进入子程序。 执行到——演示算法到当前所设最近的断点或算法窗口中的当前行。 恢复——重置屏幕为当前算法执行前的初始状态。 断点——在算法窗口的当前选择行设置断点或清除断点。 设置——设置连续演示时的速度或开/闭背景音乐(或动作音效)开关。 返回——返回算法选择菜单。 3. 断点的设置方法为:移动光标至“断点语句”所在行,点击鼠标后即出现绿色光条,之后单击“断点”菜单中的“设置断点”命令项即可,此时该断点语句所在行上将出现红色光条。 六、 算法演示屏的详细说明 本系统对屏幕设计的基本原则是集数据结构、算法和其他重要信息(如栈等)于同一屏幕。一般情况下演示屏由图示、算法和变量三个窗口组成,特殊情况下将根据演示内容适当增加。一般情况下, 左侧图示窗口显示演示数据的逻辑结构或存储结构,右侧上方窗口显示算法文本,右侧下方窗口显示当前算法中各变量的值或递归工作栈的状态。各窗口间的边界大小均可自由调节,且可按需扩大至全屏。 算法窗口显示当前演示的算法文本,并以深蓝色的光条覆盖将要执行的语句。若算法中含有函数或过程调用语句,则当光条覆盖到该过程调用语句时,随即自动隐去原算法文本而显示子过程的文本,而从此过程返回时再重新显示原算法文本。类似地,在演示递归算法执行过程时,每当执行递归调用本过程的语句时,随即隐去当前层次的算法文本而显示下一层的算法文本,并且以不同颜色的算法文本表示递归的不同层次。如第一层的算法文本为深绿色,第二层为紫色,第三层为深红色,第四层为深蓝色,第五层为浅蓝色,第六层为玫瑰红色等。 当演示递归算法执行过程中递归工作栈的变化状态时,递归工作栈显示在右侧下窗口,递归工作栈的状态和算法文本窗口中相应语句执行后的结果相对应,栈顶记录为当前递归层的参量值。每进入一层递归时,就产生一个新的工作记录(包括调用语句行号、变量参数或全程变量、数值参数和局部变量)压入栈顶;每退出一层递归时,先根据栈顶的调用语句行号返回至上层,然后在传递完变量参数的值后退栈。 各个算法演示屏的补充说明如下: 1. 顺序表和链表的插入、删除和链表的生成 算法演示屏由显示顺序表或链表的图示、算法文本及变量等三个窗口组成。在演示算法之前,需先在弹出的小窗口中输入线性表的数据元素及算法参数 i(插入或删除的位置)和 b(被插的数据元素)的值。顺序表的图示窗口在演示屏的上方,链表的图示窗口在左侧。 2. 有序表的操作 算法演示屏的状态和 1 中所述相同。 3. 汉诺塔问题 算法演示屏由4个窗口组成。右侧上方为算法文本,在算法中有4个形式参量,其中值参 n 为圆盘个数,x、y、和 z 分别表示3个塔座;右侧下方为递归工作栈,栈中每个记录包含调用语句行号 adr 及值参 n 和 x、y、z;左侧上方显示汉诺塔图形及移动操作结果;左侧下方显示移动操作的记录。 4. 迷宫问题 左侧窗口显示迷宫的逻辑结构,由 N×N 个方格组成,左上[1,1]为入口,右下[N,N]为出口,并且以红色钉子填充表示障碍,空白表示通路,红色交通灯表示已游历过的路,箭头表示继续游历的方向,演示结束时显示一条通路或迷宫不通的信息。右侧下窗口为递归工作栈,栈中每个记录含6个数据项,其中 adr 指示调用语句行号,k 指示步数,(x,y) 表示当前坐标,i 指示路径方向(起始方向为 1,顺时针方向旋转搜索)。 5. 皇后问题 左侧图示窗口包含棋盘和递归工作栈两部分,栈中记录含3个数据项,其中 adr 指示调用语句行号,k 指示列号,i 指示行号。此算法演示可求得所有可行结果,在求得每一种排布的结果之后,均会弹出一个窗口显示“找到第 j (j=1,2,…) 种排布”,单击“确定”按钮将继续进行,直至找到所有可能构成的排布。 6. 背包问题 右侧图示窗口的上方显示背包、物件及其体积。 若有解,则在求得每一组结果之后,均会弹出一个窗口提示求得一组解,单击提示窗口中的小人将继续进行。该窗口的下方为递归工作栈,栈中的记录含3个数据项,其中 adr 指示调用语句所在行号,n 指示物件个数,t 指示背包总体积。 7. 阿克曼函数 整个演示屏只有显示算法文本和显示算法执行过程中栈的状态两个窗口。在执行算法之前,首先应按照提示输入参数 m 和 n 的值。 8. 栈的输出序列 图示窗口的内容为:由算法 Gen 生成的栈的操作序列(列出在窗口的下方)、算法 Perform 执行时栈的操作过程(该窗口的上方)以及算法 Perform 执行的结果——栈的输出序列(列出在图示窗口的右侧)。 9. 表达式求值 图示窗口的内容主要为显示表达式求值过程中操作数栈和运算符栈的变化情况以及主要操作。上方的小窗口显示在算法演示之前设定的表达式。 10. 离散事件模拟 图示窗口分成3部分:中间部分或显示客户流动情况的动画,或显示程序执行过程中事件表和4个队列的数值,上方两个按钮用以切换动画或静态数据,下方则显示客户总人数、客户逗留的累计时间以及调节动画中小人移动速度的指针。 11. 串的模式匹配 上窗口显示算法文本,下窗口显示串的匹配过程或求 next 函数的过程。 12. 稀疏矩阵 图示窗口显示矩阵的状态或其三元组的表示。 13. 求广义表的深度 图示窗口显示广义表的存储结构,图中指针 ls 指向当前所求深度的广义表,值为空时不显示。演示结束时弹出窗口显示求得的深度。 14. 复制广义表 图示窗口的上方显示已知广义表的存储结构,图示窗口的下方显示复制求得的广义表的存储结构。递归工作栈中含调用语句行号 adr、变参 nls 和值参 ls。 15. 创建广义表的存储结构 图示窗口显示广义表存储结构的建立过程和算法执行过程中参数Sub的当前值。 16. 遍历二叉树 图示窗口显示二叉树的逻辑结构和遍历结果输出的结点序列,图中指针 bt 指向当前遍历的二叉树的根结点。 17. 线索二叉树 图示窗口显示二叉树的存储结构,但结点中只含标志域,而以结点间的黑色连线表示指针,红色连线表示前驱线索,蓝色连线表示后继线索。在二叉树线索化的过程中,图中指针 p 指向当前层二叉树的根结点,指针 pre 指向当前被访问的结点的前驱。在演示线索树的插入和删除过程时,图示窗口的下方还包括“输入行”和“提示行”。 18. 按先序序列建二叉链表 图示窗口显示输入的先序序列和生成二叉链表的过程。 19. 森林和二叉树的相互转换 图示窗口在显示屏的上方,其左侧为森林,右侧为二叉树。 20. 赫夫曼树和赫夫曼编码 图示窗口显示生成的赫夫曼树的逻辑结构和每个叶子结点的编码。 21. 图的深度优先搜索 图示窗口的上半部分显示图的逻辑结构,初始状态用青色圆圈表示顶点,结点间的黑色连线表示边或弧(连线上画有箭头)。演示过程中用红色覆盖已访问的顶点和边(或弧)。窗口下方显示图的邻接表,演示过程中以红色框边表示已访问过的弧。图示窗口的下方显示遍历后输出的顶点序列。 22. 图的广度优先搜索 与深度优先不同的是,在窗口的下方增加一个队列,其左端为队头,右端为队尾。 23. 求有向图的强连通分量 图示窗口自上而下分别显示有向图的逻辑结构、存储结构和 Finished 数组在算法执行过程中的变化情况。所求得的各个强连通分量,将以不同颜色的顶点组表示。 24. 求关节点和重连通分量 图示窗口的上半部分显示无向图,下半部分自上而下分别显示 Vexnum、Vexdata、Visited、Low、Squlow(求得 low 值的顺序)和 artpoint(关节点)的信息。 25. 有向图的拓扑排序 图示窗口由5部分组成。其中左上显示有向图的邻接表;左下显示有向图,其中顶点和弧的初始状态分别为绿色和黑色,从栈中退出的顶点(i)用红色表示,分别以蓝色和红色指示当前访问的邻接点(k)和它们之间的弧(ik),灰白色表示已经输出的顶点;右下显示顶点的入度;右上显示入度为零的栈。当拓扑排序不成功时,在演示屏的中央将会弹出一个窗口,显示提示信息“网中存在自环!”,此时用户可在左下显示的有向图中由绿色顶点和黑色弧构成的子图中找到这个环。 26. 有向图的关键路径 图示窗口包含5部分信息。左上显示带入度域的邻接表;左下显示有向网的逻辑结构和顶点的入度及各顶点事件的最早发生时间和最迟发生时间;右下显示拓扑排序过程中入度为零的顶点的栈S,右上显示的栈 T 存放拓扑序列,其入栈顺序和栈 S 的出栈顺序相同,从栈顶到栈底的顶点顺序即为顶点的逆拓扑序列。算法执行结束后将弹出窗口列出全部结果,其中红色字体的弧表示关键活动。 27. 普里姆算法 图示窗口包含3部分内容。右上是邻接矩阵;左上是无向网的逻辑结构,图中顶点的初始状态为黄色,算法执行过程中,红色覆盖的顶点和边则表示已加入生成树的顶点和生成树上的边;窗口的下方则显示 closedge 数组中的值。 28. 克鲁斯卡尔算法 图示窗口的左侧为无向网,以红色标定已落在生成树上的边;右侧自上而下列出各条边的信息以及选择生成树的边的执行过程。 29. 边界标识法 图示窗口的初始状态为 64KB 的模拟存储器,演示过程中,以绿色覆盖占用块。各个存储块的头部左侧所示为该块的起始地址,头部结构或其他信息参见教科书。用户可根据弹出窗口的操作提示信息进行操作,输入请求分配的空间大小或释放块的首地址。 30. 伙伴系统 在图示窗口中,左侧为可利用空间链表的逻辑结构,右侧为存储结构,其中红色覆盖部分为占用块。弹出窗口为输入窗口,由用户输入请求分配的空间大小或释放块的首地址。 31. 紧缩无用单元 右侧显示存储空间,空白表示空闲块,其他颜色覆盖表示占用块,在存储空间不足分配时将进行空闲块压缩。左侧显示存储映像。弹出窗口为输入窗口,由用户输入请求分配的空间大小和分配或释放块的块名。 32. 静态查找 上窗口为图示窗口,演示查找过程;左下和右下分别为算法文本和变量窗口。 33. B-树和B+树 整个屏幕分为上、下两个窗口,上窗口演示插入或删除结点过程中B-树或B+ 树结构的变化状况;下窗口内显示如查找关键字、插入位置、结点分裂等操作信息。下窗口上面左侧的小窗口为编辑窗口,由用户输入待插或待删的关键字,输入之后其右侧的操作命令将由隐式状态改为显式状态。 34. 内部排序 图示窗口演示排序过程以及排序过程中关键字之间进行的比较次数和记录移动的次数。 七、 用户自行输入数据指南 算法操作的对象——数据结构,或由用户自行输入,或由系统随机产生,并在获得用户的确认之前,可反复随机产生,直至用户满意,用鼠标点击“OK”按钮确认为止。 多数情况下的输入界面上有足够的提示信息,以指示用户需要进行何种操作。补充说明如下: 1. 表的数据元素为任意的单个字符。 2. 迷宫的输入界面如图3所示。图中砖墙图案表示障碍,连续点击鼠标可将光标所在位置设置成通道或者障碍,建议用户先点击“随机生成”按钮随机生成一个迷宫,然后移动鼠标调整成所需。所设迷宫可以利用“保存数据”按钮生成dat类型文件,并在需要时可以利用“取出数据”按钮读入。 图3 3. 演示背包问题的算法之前,首先需要输入物品个数,之后将出现如图4所示的输入界面,可以利用“随机生成”的按钮或各个相应的小窗口输入物品体积 wi 和背包体积 T 。背包的总体积不得超过 30 ,单个物品的体积不得超过 10 。 图4 4. “表达式求值”和“建表达式树”时的输入界面如图5所示。用户可在窗口内自行输入,并以“Enter”键为结束符;也可以连续点击左侧蓝色的表达式由系统自动生成,直至用户点击右侧的计算器表示确认为止。“求值”可实现带括弧的四则运算和幂次运算,并支持sin、cos、tan、arcsin 和 arccos 等函数计算,其操作数为实数。“建树”的表达式仅限于带括弧的四则运算,其操作数为单个字母的字符。 图5 5. 稀疏矩阵的输入界面如图6所示。用户可随意进行矩阵中任意位置元素的输入,只要将光标移动至待输入的元素位置,单击鼠标后将弹出计算器,单击数字按钮,可进行随意输入,之后点击“OK”按钮表示确认。 图6 6. 广义表的数据输入方式为自左向右顺序输入广义表的字符串。输入过程中,图7所示输入界面中的“确定”为灰色字体,只有当用户正确输入完毕时,“确定”两字才改为黑色字体,此时用户可单击此按钮表示确认。 图7 7. 图的输入界面如图8所示。之前尚需确认是否为有向图和带权图。在用户自行输入图时,首先按下“创建节点”按钮,之后可移动光标至窗口的任意位置单击鼠标创建顶点;然后单击“创建弧”按钮,可在任意两个顶点之间构建弧或边。构建弧(或边)的操作为:先将光标移动至弧尾的顶点,单击一次鼠标,然后移动光标至弧头位置,再单击一次鼠标。对于带权的图,则在构建弧(或边)的同时,在当时弹出的窗口中输入权值,权值的默认值为 1。 图8 8. 内部排序的关键字均为单个字符。
- 1.1MB
数据结构Java语言描述 Michael Main 源代码
2014-09-17数据结构Java语言描述 Michael Main 源代码
- 10.88MB
tomcat 8.5.100
2024-04-10tomcat 8.5.100
- 16.39MB
基于spring boot的小区物业管理系统源码+论文+答辩ppt
2023-03-12小区物业管理系统是在Java + MySQL开发环境的基础上开发的。Java是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的Java驱动的互联网站点使用Java。MySQL是一个数据库管理系统,因为它的体积小但速度快,成本低,或者开源受到中小型网站的青睐。因此,Java + MySQL作为一个成熟的开发环境,可以满足小区物业管理系统设计和开发所需的稳定性,安全性和可扩展性要求。系统管理也都将通过计算机进行整体智能化操作,对于小区物业管理系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、员工管理、业主信息管理、费用信息管理、楼房信息管理、报修信息管理、车位信息管理、停车信息管理、投诉编号管理、公告信息管理、部门信息管理,用户;首页、个人中心、业主信息管理、费用信息管理、楼房信息管理、报修信息管理、车位信息管理、停车信息管理、投诉编号管理、公告信息管理,员工;首页、个人中心、楼房信息管理、报修信息管理、投诉编号管理、公告信息管理、部门信息管理等功能
- 164.91MB
最新Java JDK 8安装版(Windows 64位)
2021-02-26资源内容直接来自官网,没有添加任何其它额外内容;旨在便捷地获取最新版的Java API(避免因地域原因被限制访问,因网络原因无法稳定有效下载等情况)
- 45.12MB
RocketMQ 可视化工具 Dashboard下载
2024-10-29rocketmq 可视化管理工具, 驾驶舱( rocketmq-dashboard )
- 37.77MB
自主研发的软著申请代码文档整理输出工具
2022-03-20可在软著申请时使用的代码文档整理输出工具,可选择多个特定目录,设置多类型文件,指定选择生成代码文档,可操作性很好,并且在生成word代码文档时,过滤了所有空白行和注释,过滤的注释类型涵盖mysql、java、php、python、js、html、node、vue等所有大类语言。 软件环境:win10、win7、win8、win xp 更新日志: 2022年6月1日:更新了动态进度展示,无响应超时等bug,修复了文档行数超过3500行的bug 2022年4月15日 对exe文件进行了兼容性和常见问题解决办法的更新。 2022年4月17日 增加了win7、win8、winxp低版本的兼容版本 2022年4月29日 增加了asci编码的解决方法,更新了exe的兼容性,增加了最新的0.6版本
- 15.89MB
Java 面经手册·小傅哥.pdf
2021-01-26这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等。 适合人群 1. 具备一定编程基础,工作1-3年的研发人员 2. 想阅读 Java 核心源码,但总感觉看不懂的 3. 看了太多理论,但没有实践验证的 4. 求职面试,总被面试题搞的死去活来的
- 28KB
BurpLoaderKeygen.jar.zip
2024-05-07网络安全-02-BurpSuite工具详细安装教程 BurpSuite注册机下载激活-BurpSuite工具 将BurpLoaderKeygen.jar & burpsuite_pro_v2023.4.5.jar 放置同一目录下 3.3.2 cmd命令行执行 java -jar BurpLoaderKeygen.jar >java -jar BurpLoaderKeygen.jar
- 150.57MB
java-11 windows-x64 安装包
2022-03-05java-11 windows-x64 安装包 ,免去外网下载慢的问题
- 288.30MB
jdk1.8 - 8u421 - windows
2024-09-11软件:jdk 版本: 1.8 8u421 平台: windows 下载日期: 2024-09-10
- 9.42MB
Java面试八股文2023最新版
2023-03-14工作了一年多想跳槽了,自己整理的Java面试八股文 java面试题 2023最新整理 java八股文 高频面试题 里边包含了很多领域的java se基础、springboot springcloud MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis、MySQL、Spring、tomcat、Git、 Linux Nginx,以及软实力等等技术栈 希望对你们有帮助! 用最少的money换取最新最全的面试题集!
- 39.32MB
2024最强Java面试八股文
2024-01-04《2024最强Java面试八股文》是一份针对Java面试的全面指南,内容涵盖JVM、MQ、MyBatis、MySQL、Redis、Spring Boot、Spring Cloud以及设计模式等多个方面。这份资料旨在帮助求职者系统地复习和掌握Java及相关技术的核心知识点,从而在面试中取得更好的成绩。 该资源不仅适用于校招,也适用于社招。无论您是一名即将毕业的学生还是已经有一定工作经验的开发者,都可以通过这份资料深入了解Java面试的常见考点和难点,提升自己的技能和知识储备。 在内容上,这份资料对每个技术点都进行了深入浅出的讲解,并配有大量的实例和案例分析。此外,还提供了丰富的题目和答案,帮助您更好地掌握每个知识点的运用。 总的来说,《2024最强Java面试八股文》是一份不可多得的Java面试宝典,它系统地梳理了Java面试的核心知识点,并提供了一系列的实战技巧和经验。无论您是正在准备面试的求职者,还是希望深入了解Java技术的开发者,都可以从这份资料中受益匪浅。
- 192.94MB
JDK1.8 windows 64位
2022-07-14JDK1.8 windows 64位
- 39.93MB
JavaWeb仿小米在线商城ShoppingMall
2022-06-30JavaWeb在线商城开发知识总结(java+jsp+servlet+MySQL+jdbc+css+js+jQuery) 可以实现浏览商品,查看商品详情,添加购物车,计算价格等功能 项目文章:https://blog.csdn.net/yuyunbai0917/article/details/122397372
- 47KB
ide-eval-resetter-2.3.5.jar,重新定义idea使用时间
2023-07-19ide-eval-resetter-2.3.5.jar,重新定义idea使用时间
- 72.15MB
java版本使用springboot vue websocket webrtc实现视频通话
2024-02-22java版本使用springboot vue websocket 框架 使用webrtc技术实现拨号视频通话