书名:大话数据结构
编号:2774137
ISBN:9787302255659[十位:]
作者:程杰
出版社:清华大学出版社
出版日期:2011年06月
页数:468
定价:59.00 元
参考重量:0.880Kg
-------------------------
新旧程度:6-9成新左右,不影响阅读,详细情况请咨询店主
如图书附带、磁带、学习卡等请咨询店主是否齐全
* 图书目录 *
第1章 数据结构绪论 1
1.1 开场白 2
如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。
1.2 你数据结构怎么学的? 3
他完成开发并测试通过后,得意地提交了代码。项目经理看完代码后拍着桌子对他说:“你数据结构是怎么学的?”
1.3 数据结构起源 4
1.4 基本概念和术语 5
正所谓“巧妇难为无米之炊”,再强大的计算机,也要有“米”下锅才可以干活,否则就是一堆破铜烂铁。这个“米”就是数据。
1.4.1 数据 5
1.4.2 数据元素 5
1.4.3 数据项 6
1.4.4 数据对象 6
1.4.5 数据结构 6
1.5 逻辑结构与物理结构 7
1.5.1 逻辑结构 7
1.5.2 物理结构 9
1.6 抽象数据类型 11
大家都需要房子住,但显然没钱考虑大房子是没有意义的。于是商品房就出现了各种各样的户型,有几百平米的别墅,也有仅两平米的胶囊公寓……
1.6.1 数据类型 11
1.6.2 抽象数据类型 12
1.7 总结回顾 14 1.8 结尾语 15
*终的结果一定是,你对着别人很牛的说“数据结构——就那么回事。”
第2章 算法 17
2.1 开场白 18
2.2 数据结构与算法关系 18
计算机界的前辈们,是一帮很牛很牛的人,他们使得很多看似没法解决或者很难解决的问题,变得如此美妙和神奇。
2.3 两种算法的比较 19
高斯在上小学的一天,老师要求每个学生都计算1+2+…+100的结果,谁先算出来谁先回家……
2.4 算法定义 20
现实世界中的算法千变万化,没有通用算法可以解决所有问题。甚至一个小问题,某个解决此类问题很优秀的算法却未必就适合它。
2.5 算法的特性 21
2.5.1 输入输出 21
2.5.2 有穷性 21
2.5.3 确定性 21
2.5.4 可行性 21
2.6 算法设计的要求 22
求100个人的高考成绩平均分与求全省所有考生的成绩平均分在占用时间和内存存储上有非常大的差异,我们自然追求高效率和低存储的算法来解决问题。
2.6.1 正确性 22
2.6.2 可读性 23
2.6.3 健壮性 23
2.6.4 时间效率高和存储量低 23
2.7 算法效率的度量方法 24
随着n值越来越大,它们在时间效率上的差异也就越来越大。好比有些人每天都在学习,而另一些人,打打游戏、睡睡大觉,毕业后前者名企争着要,后者求职处处无门。
2.7.1 事后统计方法 24
2.7.2 事前分析估算方法 25
2.8 函数的渐近增长 27
2.9 算法时间复杂度 29
理解大O推导不算难,难的其实是对数列的一些相关运算,这考察的更多的是数学知识和能力。
2.9.1 算法时间复杂度定义 29
2.9.2 推导大O阶方法 30
2.9.3 常数阶 30
2.9.4 线性阶 31
2.9.5 对数阶 32
2.9.6 平方阶 32
2.10 常见的时间复杂度 35
有些时候,告诉你某些东西不可以去尝试,也是一种知识的传递。总不能非要去被毒蛇咬一口才知道蛇不可以去招惹吧。
2.11 *坏情况与平均情况 35
2.12 算法空间复杂度 36
事先建立一个有2050大的数组,然后把所有年份按下标数字对应,如果是闰年,此数组项的值就是1,如果不是就是0。这样,所谓的判断某一年是否是闰年就变成了查找这个数组的某一项的值是多少的问题。
2.13 总结回顾 37
2.14 结尾语 38
愚公移山固然可敬,但发明炸药和推土机,可能更加实在和聪明。
第3章 线性表 41
3.1 开场白 42
门外家长都挤在大门口与门里的小孩子的井然有序,形成了鲜明对比。哎,有时大人的所作所为,其实还不如孩子。
3.2 线性表的定义 42
3.3 线性表的抽象数据类型 45
有时我们想知道某个小朋友(比如麦兜)是否是班级的同学,老师会告诉我说,没有,麦兜是在春田花花幼儿园里。这种查找某个元素是否存在的操作很常用。
3.4 线性表的顺序存储结构 47
他每次一吃完早饭就冲着去了图书馆,挑一个好地儿,把他书包里的书,一本一本的按座位放好,长长一排,九个座硬是被他占了。
3.4.1 顺序存储定义 47
3.4.2 顺序存储方式 47
3.4.3 数据长度与线性表长度区别 48
3.4.4 地址计算方法 49
3.5 顺序存储结构的插入与删除 50
春运时去买火车票,大家都排队排着好好的,这时来了一个美女:“可否让我排在你前面?”这可不得了,后面的人像蠕虫一样,全部都得退后一步。
3.5.1 获得元素操作 50
3.5.2 插入操作 51
3.5.3 删除操作 52
3.5.4 线性表顺序存储结构的优缺点 54
3.6 线性表的链式存储结构 55
反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。
3.6.1 顺序存储结构不足的解决
办法 55
3.6.2 线性表链式存储结构定义 56
3.6.3 头指针与头结点的异同 58
3.6.4 线性表链式存储结构代码描述 58
3.7 单链表的读取 60
3.8 单链表的插入与删除 61
本来是爸爸左牵着妈妈的手、右牵着宝宝的手在马路边散步。突然迎面走来一美女,爸爸失神般地望着,此情景被妈妈逮个正着,于是扯开父子俩,拉起宝宝的左手就快步朝前走去。
3.8.1 单链表的插入 61
3.8.2 单链表的删除 64
3.9 单链表的整表创建 66
3.10 单链表的整表删除 69
3.11 单链表结构与顺序存储结构优缺点 70
3.12 静态链表 71
对于一些语言,如Basic、Fortran等早期的编程高级语言,由于没有指针,这链表结构,按照前面我们的讲法,它就没法实现了。怎么办呢?
3.12.1 静态链表的插入操作 73
3.12.2 静态链表的删除操作 75
3.12.3 静态链表优缺点 77
3.13 循环链表 78
这个轮回的思想很有意思。它强调了不管你今生是穷是富,如果持续行善积德,下辈子就会好过,反之就会遭到报应。
3.14 双向链表 81
就像每个人的人生一样,欲收获就得付代价。双向链表既然是比单链表多了如可以反向遍历查找等的数据结构,那么也就需要付出一些小的代价。
3.15 总结回顾 84
3.16 结尾语 85
如果你觉得上学读书是受罪,假设你可以活到80岁,其实你*多也就吃了20年苦。用人生四分之一的时间来换取其余时间的幸福生活,这点苦不算啥。
第4章 栈与队列 87
以下为对购买帮助不大的评价