当前位置:首页 > 电子书 > 电子书下载 > 程序设计 >
图解数据结构:使用C++ 图解数据结构:使用C++
wu_l_v

wu_l_v 提供上传

资源
22
粉丝
30
喜欢
200
评论
2

    图解数据结构:使用C++ PDF 扫描版

    数据结构电子书
    • 发布时间:2019-12-24 10:47:02

    给大家带来的一篇关于数据结构相关的电子书资源,介绍了关于数据结构、C++方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小196 MB,胡昭民、吴灿铭编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.3。

  • 图解数据结构:使用C++ PDF 下载
  • 下载地址:https://pan.baidu.com/s/1u9m8UAolOX0rahM5JmEut
  • 提取码:0ds1
  • 数据结构毫无疑问是计算机科学既经典又核心的课程之一,不管是从事计算机软件还是硬件的开发工作,如果没有系统地学习过数据结构或者没有专心自学过,很容易被人打上“非专业”的标签。对于任何在信息技术行业工作的专业人员或者想进入此行业的人来说,什么时候开始学数据结构都不会晚,更不会过时。
    从“数据结构”的名字看,它不仅仅只是讲授数据的结构以及在计算机内如何存储和组织数据的方式,这些只是它的表面现象。数据结构背后真正蕴含的是与之息息相关的算法,精心选择的数据结构配合恰如其分的算法就意味着数据或者信息在计算机内被高效率的存储和高效率的处理。算法其实就是数据结构的灵魂,它既神秘又神奇“好玩”,当然对初学者也比较难,算法可以说是“聪明人在计算机上的游戏”。
    本书是一本综合而且全面讲述数据结构及其算法分析的教科书,为了便于高校的教学或者读者自学,作者在描述数据结构原理和算法时文字清晰且严谨,为每个算法及其数据结构提供了演算的详细图解。另外,为了适合教学中让学生上机实践或者自学者上机“操练”,本书为每个经典的算法都提供了C 语言编写的完整范例程序实例(包含完整的源代码),每个范例程序都不需要经过修改,直接通过编译就可以运行,目的就是让本书的学习者以这些范例程序作为参照迅速掌握数据结构和算法的要点。
    全书的所有范例程序都可以在标准的C 语言编程环境中编译通过并顺利运行,我们在改编本书的过程中选用了免费的Dev C 5.11集成开发环境,对原书的所有范例程序进行编译、修改、调试和测试,并确保它们都可以准确无误地运行。附录A包含了“C/C 编译程序的介绍与安装”,其中重点就介绍了Dev C 。附录B则包含了“C 程序设计语言简介”。

    本书主要讲解如何将数据结构概念用C 程序语言进行实作。本书将复杂的理论结合图文并茂的解说方式,并搭配丰富的图表及范例介绍,将数据结构中重要的观念及演算方法加以诠释,集中学习焦点。 本书适合数据结构的初学者使用,也可以作为计算机相关专业的教科书。

    目录

    • 第1章  数据结构导论 1
    • 1.1  数据结构简介 2
    • 1.1.1  数据结构的应用 2
    • 1.1.2  算法 4
    • 1.1.3  算法的描述工具 5
    • 1.2  认识程序设计 7
    • 1.2.1  高级程序设计语言 7
    • 1.2.2  程序设计要领 8
    • 1.3  程序设计的风格 8
    • 1.3.1  自顶向下与模块化设计8
    • 1.3.2  可读性设计 8
    • 1.3.3  控制结构设计 9
    • 1.3.4  面向对象设计 10
    • 1.4  面向对象设计与C 12
    • 1.4.1  C 的面向对象功能12
    • 1.4.2  类的基本概念 13
    • 1.4.3  访问权限关键词 14
    • 1.4.4  继承关系 15
    • 1.4.5  多态 16
    • 1.5  递归算法 17
    • 1.5.1  递归的定义 17
    • 1.5.2  斐波拉契数列 19
    • 1.5.3  汉诺塔问题 20
    • 1.6  程序效率的分析 25
    • 1.6.1  Big-oh 27
    • 1.6.2  Ω(omega)28
    • 1.6.3  θ(theta)28
    • 本章习题 29
    • 第2章  线性表 33
    • 2.1  线性表的定义 34
    • 2.1.1  线性表的用途 34
    • 2.2  数组 35
    • 2.2.1  一维数组 35
    • 2.2.2  二维数组 37
    • 2.2.3  多维数组 41
    • 2.2.4  结构数组 45
    • 2.2.5  C 的字符串 48
    • 2.2.6  字符串数组 50
    • 2.2.7  String类 51
    • 2.2.8  指针数组 52
    • 2.3  矩阵 54
    • 2.3.1  矩阵的运算 54
    • 2.3.2  稀疏矩阵 57
    • 2.3.3  上三角形矩阵 60
    • 2.3.4  下三角形矩阵 62
    • 2.3.5  带状矩阵 66
    • 本章习题 66
    • 第3章  链表 70
    • 3.1  动态分配内存 71
    • 3.1.1  C 的动态分配变量72
    • 3.1.2  动态配置数组 73
    • 3.2  单向链表 74
    • 3.2.1  单向链表的创建与遍历74
    • 3.2.2  单向链表插入新节点 76
    • 3.2.3  单向链表删除节点78
    • 3.2.4  单向链表的反转 80
    • 3.3  环形链表 82
    • 3.3.1  环形链表中插入新节点83
    • 3.3.2  环形链表节点的删除84
    • 3.3.3  环形链表的连接功能86
    • 3.4  双向链表 87
    • 3.4.1  双向链表的建立与遍历87
    • 3.4.2  双向链表中加入新节点88
    • 3.4.3  双向链表节点的删除90
    • 3.5  链表相关应用简介 91
    • 3.5.1  多项式表式法 92
    • 3.5.2  稀疏矩阵表示法 95
    • 本章习题 97
    • 第4章  堆栈与队列 103
    • 4.1  堆栈简介 104
    • 4.1.1  堆栈的基本操作105
    • 4.1.2  用数组实现堆栈105
    • 4.1.3  用链表实现堆栈107
    • 4.1.4  堆栈类样板的实现108
    • 4.1.5  老鼠走迷宫 109
    • 4.1.6  八皇后问题 112
    • 4.2  算术表达式的表示法114
    • 4.2.1  中序转为前序与后序115
    • 4.2.2  前序与后序转为中序120
    • 4.2.3  中序表示法求值122
    • 4.2.4  前序法的求值运算124
    • 4.2.5  后序法的求值运算125
    • 4.3  队列 125
    • 4.3.1  队列的基本操作126
    • 4.3.2  用数组实现队列126
    • 4.4  队列的相关应用 129
    • 4.4.1  环形队列 129
    • 4.4.2  双向队列 133
    • 4.4.3  优先队列 134
    • 本章习题 135
    • 第5章  树状结构 147
    • 5.1  树的基本概念 148
    • 5.1.1  专有名词介绍 149
    • 5.2  二叉树 150
    • 5.2.1  二叉树的特性 150
    • 5.2.2  特殊二叉树简介152
    • 5.3  二叉树的存储方式 153
    • 5.3.1  一维数组表示法153
    • 5.3.2  链表表示法 155
    • 5.4  二叉树的遍历 156
    • 5.4.1  中序遍历 157
    • 5.4.2  后序遍历 158
    • 5.4.3  前序遍历 158
    • 5.4.4  二叉树节点的插入与删除 160
    • 5.4.5  二叉运算树 165
    • 5.5  线索二叉树 167
    • 5.5.1  二叉树转为线索二叉树167
    • 5.6  树的二叉树表示法 171
    • 5.6.1  树转化为二叉树171
    • 5.6.2  二叉树转换成树173
    • 5.6.3  森林化为二叉树174
    • 5.6.4  二叉树转换成森林175
    • 5.6.5  树与森林的遍历176
    • 5.6.6  确定唯一二叉树180
    • 5.7  优化二叉查找树 182
    • 5.7.1  扩充二叉树 182
    • 5.7.2  霍夫曼树 184
    • 5.8  平衡树 185
    • 5.8.1  平衡树的定义 185
    • 5.9  高级树状结构的研究187
    • 5.9.1  决策树 187
    • 5.9.2  B树 189
    • 5.9.3  二叉空间分割树190
    • 5.9.4  四叉树与八叉树191
    • 本章习题 192
    • 第6章  图形结构 202
    • 6.1  图形简介 203
    • 6.1.1  图的定义 204
    • 6.1.2  无向图 204
    • 6.1.3  有向图 206
    • 6.2  图的数据表示法 207
    • 6.2.1  邻接矩阵法 207
    • 6.2.2  邻接表法 210
    • 6.2.3  邻接复合链表法212
    • 6.2.4  索引表格法 214
    • 6.3  图的遍历 217
    • 6.3.1  深度优先遍历法217
    • 6.3.2  广度优先遍历法219
    • 6.4  生成树 221
    • 6.4.1  DFS生成树和BFS生成树 222
    • 6.4.2  最小生成树 223
    • 6.4.3  Kruskal算法224
    • 6.4.4  Prim算法 227
    • 6.5    图的最短路径 228
    • 6.5.1  单点对全部顶点229
    • 6.5.2  两两顶点间的最短路径232
    • 6.6  AOV网络与拓朴排序235
    • 6.6.1  拓朴排列简介 236
    • 6.7  AOE网络 237
    • 6.7.1  关键路径 238
    • 本章习题 239
    • 第7章  排序 248
    • 7.1  排序简介 249
    • 7.1.1  排序的分类 250
    • 7.2  内部排序法 251
    • 7.2.1  冒泡排序法 251
    • 7.2.2  选择排序法 254
    • 7.2.3  插入排序法 256
    • 7.2.4  希尔排序法 258
    • 7.2.5  合并排序法 260
    • 7.2.6  快速排序法 260
    • 7.2.7  堆积排序法 263
    • 7.2.8  基数排序法 269
    • 7.3  外部排序法 272
    • 7.3.1  直接合并排序法272
    • 7.3.2  k路合并法 275
    • 7.3.3  多相合并法 276
    • 本章习题 276
    • 第8章  查找 286
    • 8.1  常见的查找方法 287
    • 8.1.1  顺序查找法 287
    • 8.1.2  二分查找法 288
    • 8.1.3  插值查找法 290
    • 8.1.4  斐波那契查找法292
    • 8.2  哈希查找法 295
    • 8.2.1  哈希法简介 296
    • 8.3  常见的哈希函数 297
    • 8.3.1  除留余数法 297
    • 8.3.2  平方取中法 297
    • 8.3.3  折叠法 298
    • 8.3.4  数字分析法 299
    • 8.4  碰撞与溢出问题的处理300
    • 8.4.1  线性探测法 300
    • 8.4.2  平方探测 301
    • 8.4.3  再哈希 301
    • 8.4.4  链表 301
    • 本章习题 303
    • 附录A  C/C 编译程序的介绍与安装 309
    • A.1  C/C 编译程序简介310
    • A.2  Dev C 的安装与介绍 313
    • 附录B  C 程序设计语言简介 319
    • B.1  C 语言的基本概念320
    • B.2  C 语言的运算符与表达式 323
    • B.3  C 语言的流程控制327
    • B.4 C 语言的高级语法 332
    • B.5  C 语言与面向对象概念341
    • 附录C  数据结构专有名词索引 349

    上一篇:R语言实战:机器学习与数据分析

    下一篇:Lua设计与实现

    展开 +

    收起 -

     
    数据结构 相关内容
    数据结构与算法
    数据结构与算法 超清扫描版

    《 数据结构与算法 》:系统软件详细介绍各种各样基础数据结构的定义、基本原理和操作步骤,并从算法的视角探讨排列和查找算法。 以难题求出主导线,从难题抽象性、数据抽象和算法抽

    立即下载
    数据结构(C语言版)
    数据结构(C语言版) 完整第2版

    《数据结构(C语言版 第2版)/21世纪高等学校计算机规划教材》 在选材与编排上,贴近当前普通高等院校数据结构课程的现状和发展趋势,符合新研究生考试大纲,内容难度适度,突出实用性

    立即下载
    Python数据结构与算法分析
    Python数据结构与算法分析 完整第2版

    若把撰写代码比成急行军打战,那麼要想独霸战场,不可以光靠手上的尖刀,还需深得古语。Python是一把尖刀,数据结构与优化算法则是古语。只能通读古语,才可以使尖刀无坚不摧。《 Pyt

    立即下载
    数据结构与算法经典问题解析:Java语言描述
    数据结构与算法经典问题解析:Java语言描述 第2版

    数据结构与算法经典问题解析:Java语言描述(原书第2版) 是一本数据结构方面的优秀教材,以Java为描述语言,介绍了计算机编程中使用的数据结构和算法。本书强调问题及其分析,而非理论阐

    立即下载
    学习JavaScript数据结构与算法
    学习JavaScript数据结构与算法 原书第3版 立即下载
    数据结构与算法分析:C语言描述
    数据结构与算法分析:C语言描述 含答案高清版

    书中详细介绍了当前流行的论题和新的变化,讨论了算法设计技巧,并在研究算法的性能、效率以及对运行时间分析的基础上考查了一些高级数据结构,从历史的角度和近年的进展对数据结构

    立即下载
    数据结构、算法与应用:C++语言描述
    数据结构、算法与应用:C++语言描述 第2版

    数据结构、算法与应用:C++语言描述(原书第2版) 共分三个部分。第一部分从第1章到第4章,旨在复习C++程序设计的概念以及程序性能的分析和测量方法。第二部分从第5章到第16章,研究数据结构

    立即下载
    数据结构教程(学习指导/上机实验)
    数据结构教程(学习指导/上机实验) 完整第5版

    这书配套设施20钟头的视频教学,本实例教程突显上机操作实习内容,书中得出很多的上机操作试验题(分成认证、布置和综合性试验),供老师和大学生采用。为了更好地老师课堂教学和孩子

    立即下载
    学习笔记
    网友NO.904341

    C++与mysql连接遇到的问题汇总

    最近接触了很多数据库的东西,本来是一直接触的是sql server,不过由于项目需要就开始对mysql进行了连接。下面就让我这个菜鸟浅谈下经验吧。 对于C++连接mysql,我不太喜欢多下载一个软件mysqlodbc,所以采用的是通过mysql自己的API函数进行连接: 1、使用API的方式连接,需要加载mysql的头文件和lib文件。 在VS2010的附加包含目录中添加\MySQL\MySQL Server 5.1\include。在安装MySql的目录下找。 把libmysql.dll和libmysql.lib文件拷贝到所建的工程目录下。然后在头文件里包含以下内容: //mysql所需的头文件和库文件 #include "winsock.h" #include "mysql.h" #pragma comment(lib,"libmySQL.lib") 2、进行编码 (1)连接mysql数据库 头文件里定义数据源指针 MYSQL m_sqlCon; //连接MySql数据库try { mysql_init( // localhost:服务器 root为账号密码 test为数据库名 3306为端口 if(!mysql_real_connect( return FALSE; } return TRUE; } catch (...) { return FALSE; } (2)关闭数据库 mysql_close( (3)创建表 char* pQuery = "create table if not exists DS_Building( ID VARCHAR(10),Name VARCHAR(255),Descs VARCHAR(255),PRIMARY KEY (ID))" if(mysql_real_query(m_sqlCon); return FALSE; } 附MySQL的API接口: 1.mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。 2.mysql_close() 关闭一个服务器连接。 3.mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_re……

    网友NO.583480

    python或C++读取指定文件夹下的所有图片

    本文实例为大家分享了python或C++读取指定文件夹下的所有图片,供大家参考,具体内容如下 1.python读取指定文件夹下的所有图片路径和图片文件名 import cv2from os import walk,pathdef get_fileNames(rootdir): data=[] prefix = [] for root, dirs, files in walk(rootdir, topdown=True): for name in files: pre, ending = path.splitext(name) if ending != ".jpg" and ending != ".jepg" and ending != ".png": continue else: data.append(path.join(root, name)) prefix.append(pre) return data, prefixif __name__ == '__main__': images, preifx = get_fileNames('/home/yasin/target_pics') #得到指定文件夹下的图片,例如.jpg,.jepg或.png等,可根据上述代码更改 for i in range(len(images)): img = cv2.imread(images[i]) w = img.shape[1] l = img.shape[0] img_res = cv2.resize(img, (w*2,l*2)) #对图片操作后 cv2.imwrite("./resized_wb/{}.jpg".format(preifx[i]),img_res) 2.C++得到指定文件夹下的所有图片并返回读取Mat值 #include stdio.h#include highgui.h#include opencv2/opencv.hpp#include cv.husing namespace std;using namespace cv;//读取指定文件下的所有图片vectorMat read_images_in_folder(cv::String pattern){ vectorcv::String fn; glob(pattern, fn, false); vectorMat images; // vectorcv::String //number of png files in images folder for (size_t i = 0; i count; i++) { // prefix.push_back(fn[i].substr(20, 4)); // 此处可以得到文件名的子字符串,可以获取图片前缀 images.push_back(imread(fn[i]));……

    网友NO.863554

    解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

    在安装mysqlclient的时候出现了以下报错: 解决办法: 1.到提示网址:https://visualstudio.microsoft.com/download/里面下载对应VC++版本安装后继续安装mysqlclient。但是本人没有找到对应文件,故不再过多赘述,这里说下第二种方法。 2.1到https://www.lfd.uci.edu/~gohlke/pythonlibs/找到mysqlclient编译包下载对应版本: 注:前面代表python版本,后面的win代表Python位数。 2.2进入到文件放置的文件夹,比如我是将下载好的文件放在了c:\envs\django1-env并安装: 2.3提示安装成功,问题解决 总结 以上所述是小编给大家介绍的解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持! ……

    网友NO.629296

    Linux下python与C++使用dlib实现人脸检测

    python 与 C++ dlib人脸检测结果对比,供大家参考,具体内容如下 说明: 由于项目需求发现Linux下c++使用dlib进行人脸检测和python使用dlib检测,得到的结果出入比较大,于是写了测试用例,发现影响结果的原因有但不限于: 1.dlib版本不同(影响不大,几个像素的差别) 2.dlib 人脸检测中detector()第二个参数的设置测试结果如下: python PDlib.py: # -*- coding: utf-8 -*-import sysimport cv2 import dlibfrom skimage import iodetector = dlib.get_frontal_face_detector()win = dlib.image_window()for f in sys.argv[1:]: img = io.imread(f) dets = detector(img,1) #使用detector进行人脸检测 for i, d in enumerate(dets): x = d.left() y = d.top() w = d.right() h = d.bottom() cv2.rectangle(img, (x, y), (w, h), (0, 255, 0)) print("({},{},{},{})".format( x, y, (w-x), (h-y))) win.set_image(img) io.imsave('./P_Dlib_test.jpg',img) #等待点击 dlib.hit_enter_to_continue() C++ CDlib.cpp: #include dlib/image_processing/frontal_face_detector.h#include dlib/opencv.h#include "opencv2/opencv.hpp"#include iostreamusing namespace dlib;using namespace std;cv::Rect Detect(cv::Mat im){ cv::Rect R; frontal_face_detector detector = get_frontal_face_detector(); array2dbgr_pixel img; assign_image(img, cv_imageuchar(im)); std::vectorrectangle dets = detector(img);//检测人脸 //查找最大脸 if (dets.size() != 0) { int Max = 0; int area = 0; for (unsigned long t = 0; t dets.size(); ++t) { if (area det……

    电子书 编程教程 PC软件下载 安卓软件下载

    Copyright 2018-2020 xz577.com 码农之家

    本站所有电子书资源不再提供下载地址,只分享来路

    免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

    版权投诉 / 书籍推广 / 赞助:QQ:520161757