getfromcode软考考证

2019韩顺平图解Java数据结构和算法视频教程

一共有195个视频教程,其他的资料资料课件笔记代码我就不列出了,太多了。

单课价¥29.90新品 上架
会员价 ¥0开通会员,全站课程无限下载套餐详情
1 人关注 更新于 2026-09-23 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

支付成功后自动发货,可在「我的订单」查看网盘链接;链接失效可联系客服免费补链。

正版保障 极速发货 售后无忧

一、这份资料要解决的核心问题

很多学习者能够写出 Java 的基本语法,却不清楚数据应该如何组织、算法为什么这样设计,以及面对同一个问题时该选择哪一种实现方式。数据结构和算法真正困难的地方,不是记住名词,而是把抽象概念落实成可以运行、调试和修改的代码。这套资料以 Java 为实现语言,将数据结构、查找、排序、递归、字符串处理和图算法放在同一条实践线上,适合用来建立“问题分析—结构选择—算法实现—复杂度判断”的思考过程。

它解决的并不是某一道题的解法,而是帮助学习者看懂一类题目背后的通用模型。例如,顺序查找和二分查找的差别,不只是代码行数不同,还涉及数据是否有序、访问方式和时间复杂度;动态规划与贪心方法也不能只靠背诵结论,而要理解状态、转移条件和局部选择是否成立。即使学习目的包含软考中的基础知识复习,这些可运行的 Java 实现也能把书面概念转化为更容易验证的工程代码。

二、从 Java 源码理解数据结构与算法

资料中的代码大体按照数据结构和算法主题进行组织,适合使用 Java 开发环境逐个打开、运行和追踪。阅读时不要只关注某个方法能否得到正确结果,还要观察类如何保存数据、方法如何改变状态、调用者如何获得结果,以及异常输入和边界条件如何处理。对于较早形成的 Java 工程配置,如果当前使用的是新的开发工具,可以先重新导入源码或建立普通 Java 工程,再把重点放回类之间的关系和算法流程,不必被工程配置本身分散注意力。

算法部分覆盖了多种具有代表性的思路,包括非递归二分查找、分治、字符串匹配、动态规划、贪心,以及图上的最短路径和最小生成树等内容。像迪杰斯特拉、弗洛伊德、克鲁斯卡尔、普里姆这类算法,适合放在一起比较:它们处理的对象相近,但依赖的数据表示、选择策略和适用条件并不相同;字符串匹配则可以帮助理解朴素比较与模式信息复用之间的区别。通过这些对照,学习者能逐渐形成按约束选算法的习惯,而不是看到题目就机械套模板。

  • 先确认输入规模、数据是否有序、图是否带权,以及问题是否允许重复计算。
  • 再观察代码中的循环、递归、辅助数组和状态更新,判断时间与空间开销。
  • 最后主动修改边界数据,验证空集合、单个元素、重复值和不可达情况。

三、适合什么基础,建议先看哪几块

这套资料更适合已经接触过 Java 基础语法的学习者。至少应能看懂变量、数组、循环、方法、类和对象,知道如何编译运行一个简单程序,并能使用断点或输出信息定位问题。不要求提前掌握复杂算法,但如果连数组下标、引用传递、递归调用和基本面向对象写法都不熟,直接进入图算法会比较吃力。基础较弱时,可以先用小程序复习数组遍历、方法拆分、类的封装和简单输入输出。

观看顺序不必完全依赖视频的排列顺序,更适合按认知难度重新分段。先看数据结构的基本表示和操作,再理解递归、复杂度以及查找排序;完成这些准备后,再进入字符串、分治、动态规划和贪心。图算法建议放在后面,因为它同时要求理解邻接关系、权值、集合或优先选择等概念。可以按下面的顺序建立主线:

  • 第一阶段:熟悉线性数据组织、基本操作和 Java 类的实现方式。
  • 第二阶段:掌握递归、查找、排序,并记录每种方法的适用条件与复杂度。
  • 第三阶段:对照分治、动态规划和贪心,分析它们如何拆分问题和保存结果。
  • 第四阶段:集中学习图的遍历、最短路径和最小生成树,比较不同算法的决策过程。

四、学完后可以独立完成什么

完成系统学习并进行足够改写后,可以独立实现一组常用的数据结构操作,例如增加、删除、查找、遍历和排序,并根据数据特点选择合适的存储方式。面对一个新的 Java 题目时,也能先拆出输入、状态、操作和输出,而不是立即复制一段代码。对于包含路径、连接关系或字符串匹配的问题,可以进一步判断它属于查找、图搜索、最短路径、集合合并、模式匹配或状态转移中的哪一类。

更重要的是,学习者可以把这些实现整理成可复用的小模块,再嵌入控制台程序或其他练习项目中。例如,将查找方法封装成独立工具,将图的表示与具体路径算法分开,将排序逻辑与数据输入分开,这样更换数据来源或算法时不必重写全部代码。遇到运行结果错误时,也能够沿着数据初始化、核心循环、状态更新和结果输出逐层排查,并用复杂度和边界条件解释为什么某种写法在大规模数据下会变慢。

五、视频、笔记和源码如何配合练习

视频适合用来建立概念和观察完整推导,源码适合用来验证细节,课件与笔记则适合在复习时快速定位定义、步骤和复杂度。不要连续播放大量内容后再一次性运行代码,建议每看完一个主题就暂停,把核心流程用自己的话写成几行伪代码,然后脱离原实现重新敲一遍。第一次运行关注结果,第二次关注变量变化,第三次主动改动输入和实现方式,这样才能判断自己是否真正理解。

练习时可以为每个算法保留一份简短记录,写清楚它解决什么问题、输入需要满足什么条件、核心状态是什么、最坏情况下的开销是多少。源码中的示例不要只当作最终答案,可以尝试改成空输入、单元素、重复元素、逆序数据和不可达图,再观察程序是否稳定。遇到看不懂的部分,先通过断点追踪调用顺序,再回到笔记补充概念;遇到能运行但不理解的部分,则重写变量名、拆分方法并补充注释。按照这种方式使用资料,它就不只是视频合集,而是一套可以反复对照、调试和扩展的 Java 数据结构与算法实践材料。


一共有195个视频教程,其他的资料资料课件笔记代码我就不列出了,太多了。

视频目录(224 节)

代码 / Algorithm

*   .classpath

*   .project

代码 / Algorithm / .settings

*   org.eclipse.jdt.core.prefs

代码 / Algorithm / src / com / atguigu

*   binarysearchnorecursion

*   dac

*   dijkstra

*   dynamic

*   floyd

*   greedy

*   horse

*   kmp

*   kruskal

*   prim

代码 / DataStructures

*   .classpath

*   .project

代码 / DataStructures / .settings

*   org.eclipse.jdt.core.prefs

代码 / DataStructures / src / com / atguigu

*   avl

*   binarysorttree

*   graph

*   hashtab

*   huffmancode

*   huffmantree

*   linkedlist

*   queue

*   recursion

*   reversepolishcal

*   search

*   sort

*   sparsearray

*   stack

*   tree

课件

*   尚硅谷_韩顺平_Java数据结构和算法【最新版】.pptx

*   图解.xlsx

视频

*   001-尚硅谷-老韩图解Java数据结构和算法-几个经典的算法面试题(1) 【

*   002-尚硅谷-老韩图解Java数据结构和算法-几个经典的算法面试题(2) 【

*   003-尚硅谷-老韩图解Java数据结构和算法-内容介绍和授课方式 【

*   004-尚硅谷-老韩图解Java数据结构和算法-数据结构和算法的关系 【

*   005-尚硅谷-老韩图解Java数据结构和算法-编程中实际遇到的几个问题 【

*   006-尚硅谷-老韩图解Java数据结构和算法-线性结构和非线性结构 【

*   007-尚硅谷-老韩图解Java数据结构和算法-稀疏数组的应用场景 【

*   008-尚硅谷-老韩图解Java数据结构和算法-稀疏数组转换的思路分析 【

*   009-尚硅谷-老韩图解Java数据结构和算法-稀疏数组的代码实现 【

*   010-尚硅谷-老韩图解Java数据结构和算法-队列的应用场景和介绍 【

*   011-尚硅谷-老韩图解Java数据结构和算法-数组模拟队列的思路分析 【

*   012-尚硅谷-老韩图解Java数据结构和算法-数组模拟队列代码实现(1) 【

*   013-尚硅谷-老韩图解Java数据结构和算法-数组模拟队列代码实现(2) 【

*   014-尚硅谷-老韩图解Java数据结构和算法-数组模拟环形队列思路分析图 【

*   015-尚硅谷-老韩图解Java数据结构和算法-数组模拟环形队列实现 【

*   016-尚硅谷-老韩图解Java数据结构和算法-单链表介绍和内存布局 【

*   017-尚硅谷-老韩图解Java数据结构和算法-单链表创建和遍历的分析实现 【

*   018-尚硅谷-老韩图解Java数据结构和算法-单链表按顺序插入节点 【

*   019-尚硅谷-老韩图解Java数据结构和算法-单链表节点的修改 【

*   020-尚硅谷-老韩图解Java数据结构和算法-单链表节点的删除和小结 【

*   021-尚硅谷-老韩图解Java数据结构和算法-单链表新浪面试题 【

*   022-尚硅谷-老韩图解Java数据结构和算法-单链表腾讯面试题 【

*   023-尚硅谷-老韩图解Java数据结构和算法-单链表百度面试题 【

*   024-尚硅谷-老韩图解Java数据结构和算法-双向链表增删改查分析图解 【

*   025-尚硅谷-老韩图解Java数据结构和算法-双向链表增删改查代码实现 【

*   026-尚硅谷-老韩图解Java数据结构和算法-双向链表功能测试和小结 【

*   027-尚硅谷-老韩图解Java数据结构和算法-环形链表介绍和约瑟夫问题 【

*   028-尚硅谷-老韩图解Java数据结构和算法-约瑟夫问题分析图解和实现(1) 【

*   029-尚硅谷-老韩图解Java数据结构和算法-约瑟夫问题分析图解和实现(2) 【

*   030-尚硅谷-老韩图解Java数据结构和算法-栈的应用场景和介绍 【

*   031-尚硅谷-老韩图解Java数据结构和算法-栈的思路分析和代码实现 【

*   032-尚硅谷-老韩图解Java数据结构和算法-栈的功能测试和小结 【

*   033-尚硅谷-老韩图解Java数据结构和算法-栈实现综合计算器-思路分析(1) 【

*   034-尚硅谷-老韩图解Java数据结构和算法-栈实现综合计算器-代码实现(2) 【

*   035-尚硅谷-老韩图解Java数据结构和算法-栈实现综合计算器-代码实现(3) 【

*   036-尚硅谷-老韩图解Java数据结构和算法-前缀 中缀 后缀表达式规则 【

*   037-尚硅谷-老韩图解Java数据结构和算法-逆波兰计算器分析和实现(1) 【

*   038-尚硅谷-老韩图解Java数据结构和算法-逆波兰计算器分析和实现(2) 【

*   039-尚硅谷-老韩图解Java数据结构和算法-中缀转后缀表达式思路分析 【

*   040-尚硅谷-老韩图解Java数据结构和算法-中缀转后缀表达式代码实现(1) 【

*   041-尚硅谷-老韩图解Java数据结构和算法-中缀转后缀表达式代码实现(2) 【

*   042-尚硅谷-老韩图解Java数据结构和算法-完整版逆波兰计算器和小结 【

*   043-尚硅谷-老韩图解Java数据结构和算法-递归应用场景和调用机制 【

*   044-尚硅谷-老韩图解Java数据结构和算法-递归能解决的问题和规则 【

*   045-尚硅谷-老韩图解Java数据结构和算法-迷宫回溯问题分析和实现(1) 【

*   046-尚硅谷-老韩图解Java数据结构和算法-迷宫回溯问题分析和实现(2) 【

*   047-尚硅谷-老韩图解Java数据结构和算法-八皇后问题分析和实现(1) 【

*   048-尚硅谷-老韩图解Java数据结构和算法-八皇后问题分析和实现(2) 【

*   049-尚硅谷-老韩图解Java数据结构和算法-八皇后问题分析和实现(3) 【

*   050-尚硅谷-老韩图解Java数据结构和算法-排序算法介绍和分类 【

*   051-尚硅谷-老韩图解Java数据结构和算法-时间频度介绍和特点 【

*   052-尚硅谷-老韩图解Java数据结构和算法-时间复杂度计算和举例说明 【

*   053-尚硅谷-老韩图解Java数据结构和算法-平均和最坏时间复杂度介绍 【

*   054-尚硅谷-老韩图解Java数据结构和算法-冒泡排序算法思路图解 【

*   055-尚硅谷-老韩图解Java数据结构和算法-冒泡排序算法代码实现 【

*   056-尚硅谷-老韩图解Java数据结构和算法-冒泡排序算法优化和总结 【

*   057-尚硅谷-老韩图解Java数据结构和算法-选择排序算法思路图解 【

*   058-尚硅谷-老韩图解Java数据结构和算法-选择排序算法代码实现 【

*   059-尚硅谷-老韩图解Java数据结构和算法-选择排序算法速度测试 【

*   060-尚硅谷-老韩图解Java数据结构和算法-插入排序算法思路图解 【

*   061-尚硅谷-老韩图解Java数据结构和算法-插入排序算法代码实现 【

*   062-尚硅谷-老韩图解Java数据结构和算法-插入排序算法速度测试 【

*   063-尚硅谷-老韩图解Java数据结构和算法-希尔排序算法思路图解 【

*   064-尚硅谷-老韩图解Java数据结构和算法-希尔排序[交换式]算法实现 【

*   065-尚硅谷-老韩图解Java数据结构和算法-希尔排序[移位式]算法实现 【

*   066-尚硅谷-老韩图解Java数据结构和算法-快速排序算法思路图解 【

*   067-尚硅谷-老韩图解Java数据结构和算法-快速排序算法代码实现 【

*   068-尚硅谷-老韩图解Java数据结构和算法-快速排序算法速度测试 【

*   069-尚硅谷-老韩图解Java数据结构和算法-归并排序算法思路图解 【

*   070-尚硅谷-老韩图解Java数据结构和算法-归并排序算法代码实现 【

*   071-尚硅谷-老韩图解Java数据结构和算法-归并排序算法速度测试 【

*   072-尚硅谷-老韩图解Java数据结构和算法-基数排序算法思路图解 【

*   073-尚硅谷-老韩图解Java数据结构和算法-基数排序算法代码实现(1) 【

*   074-尚硅谷-老韩图解Java数据结构和算法-基数排序算法代码实现(2) 【

*   075-尚硅谷-老韩图解Java数据结构和算法-基数排序算法注意事项 【

*   076-尚硅谷-老韩图解Java数据结构和算法-排序算法时间复杂度比较 【

*   077-尚硅谷-老韩图解Java数据结构和算法-线性查找分析和实现 【

*   078-尚硅谷-老韩图解Java数据结构和算法-二分查找算法思路图解 【

*   079-尚硅谷-老韩图解Java数据结构和算法-二分查找算法代码实现 【

*   080-尚硅谷-老韩图解Java数据结构和算法-二分查找算法功能完善 【

*   081-尚硅谷-老韩图解Java数据结构和算法-插值查找算法工作原理 【

*   082-尚硅谷-老韩图解Java数据结构和算法-插值查找算法代码实现 【

*   083-尚硅谷-老韩图解Java数据结构和算法-斐波那契查找算法原理 【

*   084-尚硅谷-老韩图解Java数据结构和算法-斐波那契查找代码实现 【

*   085-尚硅谷-老韩图解Java数据结构和算法-斐波那契查找算法小结 【

*   086-尚硅谷-老韩图解Java数据结构和算法-哈希表的介绍和内存布局 【

*   087-尚硅谷-老韩图解Java数据结构和算法-哈希表实现思路图解 【

*   088-尚硅谷-老韩图解Java数据结构和算法-哈希表代码实现(1) 【

*   089-尚硅谷-老韩图解Java数据结构和算法-哈希表代码实现(2) 【

*   090-尚硅谷-老韩图解Java数据结构和算法-数组 链表 树存储方式分析 【

*   091-尚硅谷-老韩图解Java数据结构和算法-二叉树的概念和常用术语 【

*   092-尚硅谷-老韩图解Java数据结构和算法-前序中序后序遍历二叉树图解 【

*   093-尚硅谷-老韩图解Java数据结构和算法-前序中序后序遍历代码实现(1) 【

*   094-尚硅谷-老韩图解Java数据结构和算法-前序中序后序遍历代码实现(2) 【

*   095-尚硅谷-老韩图解Java数据结构和算法-前序中序后序查找思路图解 【

*   096-尚硅谷-老韩图解Java数据结构和算法-前序中序后序查找代码实现(1) 【

*   097-尚硅谷-老韩图解Java数据结构和算法-前序中序后序查找代码实现(2) 【

*   098-尚硅谷-老韩图解Java数据结构和算法-二叉树删除结点思路图解 【

*   099-尚硅谷-老韩图解Java数据结构和算法-二叉树删除结点代码实现 【

*   100-尚硅谷-老韩图解Java数据结构和算法-顺序存储二叉树思路图解 【

*   101-尚硅谷-老韩图解Java数据结构和算法-顺序存储二叉树代码实现 【

*   102-尚硅谷-老韩图解Java数据结构和算法-线索化二叉树的介绍 【

*   103-尚硅谷-老韩图解Java数据结构和算法-线索化二叉树思路图解 【

*   104-尚硅谷-老韩图解Java数据结构和算法-线索化二叉树代码实现1 【

*   105-尚硅谷-老韩图解Java数据结构和算法-线索化二叉树代码实现2 【

*   106-尚硅谷-老韩图解Java数据结构和算法-遍历线索化二叉树实现 【

*   107-尚硅谷-老韩图解Java数据结构和算法-大顶堆和小顶堆图解说明 【

*   108-尚硅谷-老韩图解Java数据结构和算法-堆排序的思路图解 【

*   109-尚硅谷-老韩图解Java数据结构和算法-堆排序的代码实现1 【

*   110-尚硅谷-老韩图解Java数据结构和算法-堆排序的代码实现2 【

*   111-尚硅谷-老韩图解Java数据结构和算法-堆排序的速度测试和小结 【

*   112-尚硅谷-老韩图解Java数据结构和算法-赫夫曼树的基本介绍 【

*   113-尚硅谷-老韩图解Java数据结构和算法-赫夫曼树创建步骤图解 【

*   114-尚硅谷-老韩图解Java数据结构和算法-赫夫曼树创建代码实现 【

*   115-尚硅谷-老韩图解Java数据结构和算法-变长编码的举例说明 【

*   116-尚硅谷-老韩图解Java数据结构和算法-赫夫曼编码的原理图解 【

*   117-尚硅谷-老韩图解Java数据结构和算法-数据压缩-创建赫夫曼树思路 【

*   118-尚硅谷-老韩图解Java数据结构和算法-数据压缩-创建赫夫曼树实现 【

*   119-尚硅谷-老韩图解Java数据结构和算法-数据压缩-生成赫夫曼编码表 【

*   120-尚硅谷-老韩图解Java数据结构和算法-数据压缩-赫夫曼编码字节数组 【

*   121-尚硅谷-老韩图解Java数据结构和算法-数据压缩-赫夫曼字节数组封装 【

*   122-尚硅谷-老韩图解Java数据结构和算法-数据解压-字节转二进制字符串 【

*   123-尚硅谷-老韩图解Java数据结构和算法-数据解压-赫夫曼解码 【

*   124-尚硅谷-老韩图解Java数据结构和算法-使用赫夫曼编码压缩文件 【

*   125-尚硅谷-老韩图解Java数据结构和算法-使用赫夫曼编码解压文件 【

*   126-尚硅谷-老韩图解Java数据结构和算法-赫夫曼编码注意事项 【

*   127-尚硅谷-老韩图解Java数据结构和算法-二叉排序树(BST)的介绍 【

*   128-尚硅谷-老韩图解Java数据结构和算法-二叉排序树(BST)创建和遍历 【

*   129-尚硅谷-老韩图解Java数据结构和算法-二叉排序树删除结点思路图解 【

*   130-尚硅谷-老韩图解Java数据结构和算法-二叉排序树删除叶子结点(1) 【

*   131-尚硅谷-老韩图解Java数据结构和算法-二叉排序树删除叶子结点(2) 【

*   132-尚硅谷-老韩图解Java数据结构和算法-BST删除有一颗子树的结点 【

*   133-尚硅谷-老韩图解Java数据结构和算法-BST删除有二颗子树的结点 【

*   134-尚硅谷-老韩图解Java数据结构和算法-BST删除结点的注意事项 【

*   135-尚硅谷-老韩图解Java数据结构和算法-平衡二叉树(AVL树)介绍 【

*   136-尚硅谷-老韩图解Java数据结构和算法-AVL树左旋转思路图解 【

*   137-尚硅谷-老韩图解Java数据结构和算法-AVL树高度求解 【

*   138-尚硅谷-老韩图解Java数据结构和算法-AVL树左旋转代码实现 【

*   139-尚硅谷-老韩图解Java数据结构和算法-AVL树右旋转图解和实现 【

*   140-尚硅谷-老韩图解Java数据结构和算法-AVL树双旋转图解和实现 【

*   141-尚硅谷-老韩图解Java数据结构和算法-平衡二叉树(AVL树)小结 【

*   142-尚硅谷-老韩图解Java数据结构和算法-多叉树原理图解 【

*   143-尚硅谷-老韩图解Java数据结构和算法-2-3树原理图解 【

*   144-尚硅谷-老韩图解Java数据结构和算法-B树和B加树原理图解 【

*   145-尚硅谷-老韩图解Java数据结构和算法-B星树和多路查找树小结 【

*   146-尚硅谷-老韩图解Java数据结构和算法-图的基本介绍和存储形式 【

*   147-尚硅谷-老韩图解Java数据结构和算法-图的创建图解和代码实现 【

*   148-尚硅谷-老韩图解Java数据结构和算法-图的深度优先(DFS)算法图解 【

*   149-尚硅谷-老韩图解Java数据结构和算法-图的深度优先(DFS)代码实现 【

*   150-尚硅谷-老韩图解Java数据结构和算法-图的广度优先(BFS)算法图解 【

*   151-尚硅谷-老韩图解Java数据结构和算法-图的广度优先(BFS)代码实现 【

*   152-尚硅谷-老韩图解Java数据结构和算法-DFS和BFS比较及图小结 【

*   153-尚硅谷-老韩图解Java数据结构和算法-二分查找非递归算法分析实现 【

*   154-尚硅谷-老韩图解Java数据结构和算法-分治算法的设计模式 【

*   155-尚硅谷-老韩图解Java数据结构和算法-分治算法解决汉诺塔问题 【

*   156-尚硅谷-老韩图解Java数据结构和算法-动态规划算法基本介绍 【

*   157-尚硅谷-老韩图解Java数据结构和算法-动态规划算法解决背包问题1 【

*   158-尚硅谷-老韩图解Java数据结构和算法-动态规划算法解决背包问题2 【

*   159-尚硅谷-老韩图解Java数据结构和算法-动态规划算法解决背包问题3 【

*   160-尚硅谷-老韩图解Java数据结构和算法-暴力匹配算法解决字串匹配问题 【

资料 / 清华大学本科 数据结构 (韩顺平整理)

*   第归与广义表.ppt

*   集合与搜索.ppt

*   链表.PPT

*   排序.ppt

*   授课老师介绍.ppt

*   树与森林.ppt

*   数组.ppt

*   索引与散列.ppt

*   图.ppt

*   绪论.ppt

*   c++语言介绍.ppt

*   ds1-3.zip

*   ds1.zip

*   ds2.zip

*   ds3.zip

*   ds4-6.zip

*   ds4.zip

*   DS7-10.zip

资料 / 压缩测试文件

*   1.pptx

*   src.bmp

资料 / google算法编程大赛

*   磁盘问题

*   矩阵中查找单词路径数

*   扔石头

资料 / google算法编程大赛 / 公交车

*   BusStops.class

*   BusStops$Location.class

*   BusStopTest.class

资料 / google算法编程大赛 / 画图

*   DrawLines.class

*   GoogleTest.class

*   TestMain.class

资料 / google算法编程大赛 / 球和篮子

*   BasketTest.class

*   FillBaskets.class

配套笔记(9 份 PDF)

笔记

*   尚硅谷_韩顺平_图解Java数据结构和算法.pdf

资料 / 清华大学本科 数据结构 (韩顺平整理) / 4—6

*   第3章习题(链表).doc

*   第4章习题(栈和队列).doc

*   第5章习题(递归与广义表).doc

*   第6章习题(树与深林).doc

*   第7章习题(集合与搜索).doc

*   第8章习题(图).doc

*   第9章习题(排序).doc

*   第A章习题(索引与散列).doc