新書推薦:
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:NT$
349.0
《
人生解忧:佛学入门四十讲
》
售價:NT$
490.0
《
东野圭吾:分身(东野圭吾无法再现的双女主之作 奇绝瑰丽、残忍又温情)
》
售價:NT$
295.0
《
浪潮将至
》
售價:NT$
395.0
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:NT$
260.0
《
日内交易与波段交易的资金风险管理
》
售價:NT$
390.0
《
自然信息图:一目了然的万物奇观
》
售價:NT$
640.0
《
女性史:古代卷(真正意义上的女性大历史)
》
售價:NT$
560.0
|
編輯推薦: |
通俗易懂,顺序渐进,深入浅出,突出数据结构和程序设计的关系,案例和程序源码。
|
內容簡介: |
《用C实现数据结构程序设计》系统地介绍了线性表、栈、队列、串、二维数组、树和森林、二叉树、图等八大结构,为后续课程操作系统、编译原理、数据库原理等课程奠定了良好的基础。本教材还结合查找和排序两大应用领域深入探讨了各类数据结构和程序设计技巧的综合应用,*后对文件系统进行了初步的介绍。书中提出了计算机编程点式思维的思想方法,通过基本的程序设计方式实现了大多数数据结构的基本操作。
|
目錄:
|
目录
第1章数据结构基础
1.1面式思维和点式思维
1.2数据结构背景
1.3数据结构的应用案例
1.4数据结构基本概念
1.5逻辑结构分类
1.6存储结构分类
1.7数据结构基本操作
1.8算法和算法效率分析基础
1.9递归的概念和应用
1.10本章总结
习题
第2章线性表的构造与应用
2.1引言
2.2线性表的逻辑结构
2.3线性表的顺序存储
2.4线性表的链接存储
2.5线性表链接存储的变形
2.6线性表存储结构实现的选择标准
2.7线性表的应用案例
2.8本章总结
习题
第3章查找与排序程序设计初步
3.1引言
3.2查找的基本概念
3.3顺序查找技术
3.4排序基础和基本概念
3.5基本排序算法设计
3.5.1排序算法设计基础
3.5.2直接插入排序
3.5.3简单选择排序
3.5.4冒泡排序
3.5.5单链表插入排序
3.6排序的应用案例
3.7本章总结
习题
第4章栈的构造与应用
4.1引言
4.2栈的逻辑结构
4.3栈的顺序存储
4.4栈的链接存储
4.5栈的应用案例
4.6本章总结
习题
第5章队列的构造与应用
5.1引言
5.2队列的逻辑结构
5.3队列的顺序存储
5.4队列的环状顺序存储
5.5队列的链接存储
5.6队列的应用案例
5.7本章总结
习题
第6章串的构造与应用
6.1引言
6.2串的逻辑结构
6.3串的顺序存储
6.4串的链接存储
6.5串的索引存储
6.6串的应用案例
6.7本章总结
习题
第7章二维数组和广义表的构造与应用
7.1引言
7.2二维数组的逻辑结构
7.3二维数组的顺序存储
7.4特殊矩阵的压缩存储
7.5稀疏矩阵的压缩存储
7.6稀疏矩阵的十字链表存储
7.7二维数组的应用案例与程序设计
7.8广义表简介
7.9二维码简介
7.10本章总结
习题
第8章二叉树、树和森林的构造与应用
8.1引言
8.2二叉树及其逻辑结构
8.3二叉树的顺序存储
8.4二叉树的链接存储
8.5二叉树的构建和数据显示
8.6二叉树的根序遍历
8.6.1根序遍历的定义和递归算法实现
8.6.2根序遍历的非递归算法实现
8.7二叉树的层次遍历
8.8线索二叉树
8.8.1线索二叉树的定义、逻辑结构及存储结构
8.8.2线索二叉树的算法设计
8.9最优二叉树
8.10树、森林和二叉树的关系
8.11本章总结
习题
第9章图的构造与应用
9.1引言
9.2图的逻辑结构
9.3图的顺序存储
9.4图的链接存储
9.5遍历操作的程序设计
9.6公路网最短路径的研究
9.7AOV网与拓扑排序
9.8最小代价生成树的研究
9.8.1最小生成树的定义
9.8.2构造最小生成树的Prim算法
9.8.3构造最小生成树的Kruskal算法
9.9本章总结
习题
第10章查找程序设计进阶
10.1引言
10.2有序表的折半查找和其他变形
10.2.1有序表的折半查找
10.2.2有序表的斐波那契查找和插值查找
10.2.3分块查找
10.3二叉排序树与相应的查找技术
10.4平衡二叉树与相应的查找技术
10.5哈希表结构的查找技术
10.5.1哈希表的定义和构成
10.5.2常见的哈希函数
10.5.3哈希表的查找过程和冲突解决方法
10.6字符串结构的快速查找
10.7查找的应用案例
10.8本章总结
习题
第11章排序程序设计进阶
11.1引言
11.2折半插入排序技术
11.3希尔排序技术
11.4快速排序技术
11.5树形选择排序技术
11.6堆排序技术
11.7归并排序技术
11.8基数排序技术
11.9本章总结
习题
第12章文件结构
12.1引言
12.2文件的逻辑结构
12.3顺序文件
12.4索引文件
12.5索引顺序存取方法文件
12.6虚拟存储存取方法文件
12.7直接存取文件
12.8多重表文件
12.9倒排文件
12.10文件的应用案例
12.11歌曲文件的数据结构
12.12本章总结
习题
附录数据结构程序设计源码涉及英语词汇或变量名中英对照表
参考文献
|
內容試閱:
|
前言
高级语言程序设计、数据结构、算法设计与分析构成了程序设计理论底层的黄金三角形。高级语言程序设计偏重语法的描述和程序设计细节等能力培养,数据结构重点讨论程序设计中如何分析、规划、存储和实现相关的数据以及关系,算法设计与分析则偏重解题思路的实现。大部分算法设计首先依赖数据结构的构造,这将深远影响到程序的时间效率和空间效率,以及程序结构的合理性和程序阅读的简易性。计算机界著名学者尼古拉斯沃思Wirth N.提出的算法 数据结构=程序的观点正说明数据结构的重要性,即使在面向过程转向面向对象程序设计的今天,对象中底层的函数实现依然能体现这句至理名言的正确性。万丈高楼平地起,楼高几何看地基。数据结构就是程序设计的地基,必须先学好它,以打下扎实的基础。
我从事数据结构教学已有三十多年,教学实践中深深体会到,数据结构是计算机专业一门很难的课程,学生普遍反映过于抽象和难以编程实现。这反映了几个现实问题: ①高级语言课程所教授的内容与数据结构编程需求有一定的距离,高级语言教程讨论得更多的是数值计算方面的程序设计范例,对于离散结构的讨论相对偏少。②算法设计是数据结构的后续课程,很多设计思想在数据结构课程中暂时无法起到引导作用。③从数据结构本身看,教材书写方式有时成了学习过程的阻碍。部分数据结构教材偏重理论,多用所谓的算法表述数据结构程序设计思想,导致学生可以模仿编程的范例不够,实际效果不大理想; 部分教材源于翻译国外教材,术语和描述生涩难懂; 部分教材重点、难点不突出,整体结构不完整,缺乏应用层面的案例分析,增加了学生的学习困难。
2015年,我在清华大学出版社作为主编出版了《用C实现数据结构程序设计》,收到了来自全国各地的大学生或程序开发工作者的来信。因为阅读了我编写的教材,他们能够以较快的速度学习到数据结构的程序设计,效果很理想,对考研也有较大帮助,希望我能推出更多平台上的数据结构源码设计。受到这些热情读者和编辑的鼓励,我开始着手编写数据结构的C版程序设计,最终完成这本教材,希望能帮助读者尽快学会数据结构程序设计。
学习数据结构是一种痛并快乐着的过程,在学习的时候大部分学生都会感到过于抽象和高深,但是如果能用程序具体实现,就会有成就感,会被计算机科学家的奇思妙想所震撼,体会到程序设计的引人入胜,整个过程是充满挑战和乐趣的。
本书特色是全面给出数据结构相关程序设计源码,并给出了运行界面图,使得学生有一个可以研究、探讨、模仿、提高的平台。本书的程序设计范例很多都具有可移植性、实用性和趣味性,覆盖了多种程序设计方法和界面设计风格。
全书体系结构完整,注重原理与实践结合,重点和难点突出,为学生搭建了全面的学习和研究平台,其目标是学生易于学习、老师易于组织教学。本书提供了菜单编制、多种数据提供方式、多种输出格式、程序反复运行、处理意外情况、颜色和标题栏、方向键控制等源码,提供了多种界面设计的范例。线性表之后先介绍查找和排序基础部分,体现了线性表的使用价值,而进阶部分涉及更复杂的数据结构,在大部分数据结构知识学习完成之后再分别讲解。
全书共分12章,内容涉及学习数据结构基础和递归思想; 线性数据结构、非线性数据结构; 线性表、栈、队列、字符串、二维数组、树和森林、二叉树、图; 还涉及查找、排序等基础应用。为拓展数据结构知识,还介绍了文件的基础知识。
本书配有电子教案和程序源代码,便于老师教学和学生使用。采用C语言编程实现,程序均在VC 6.0下调试并运行通过。
数据结构是程序开发的基础,是进入程序设计殿堂的敲门砖。本书是我多年来勤恳敬业、认真教学和深入思考的结晶,希望读者能分享和品味学习的乐趣。
我要感谢我的父母及家人,还有我的诸多朋友,他们的鼓励和支持让我不能忘怀。
我要感谢我多年前在清华大学研习人工智能研究生课程时的指导老师石纯一教授,他对专业的精通、做事的认真以及平易近人的态度让我一生都受益匪浅,那段时光是我一生的珍贵回忆和骄傲。
本书能够顺利出版,得益于清华大学出版社的全力支持和帮助,责任编辑的细致审稿和建议使本书增色不少,在此深表谢意。
由于能力所限及时间紧迫,书中难免存在疏漏,希望读者提出宝贵意见和建议,以便再版时改进和提高。
马春江于湖北汽车工业学院计算机系
2019年1月
|
|