标题：数据结构与程序构建
基本信息
图书详细信息：
定价：39元
印次：1-1
装帧：平装
印刷日期：2012-7-30
图书简介
本书的特色是在源码级别而不是算法级别上讨论数据结构，给出的程序构建能帮助学生掌握数据结构程序设计和提高综合运用数据结构的能力。全书共分15章，按照基础知识、理论知识和应用等3部分来编写。第一部分包括数据结构的基本概念、C++复习与归纳、递归思想，第二部分包括线性数据结构、非线性数据结构，第三部分包括查找、排序等应用。
本书可作为高等院校理论与应用型本科层次计算机相关专业教材，还适用于高职高专层次各类学校参考使用，也可作为计算机岗位培训和计算机爱好者自学用书。
前言
任何希望掌握计算机程序设计的学生首先要了解由三门课程构成了程序设计理论底层的黄金三角形，分别是高级语言、数据结构、算法设计与分析。高级语言偏重语法的描述和细节程序设计等能力培养，数据结构重点讨论程序设计中如何分析、规划和存储实现相关的数据以及关系，算法设计则偏重解题思路的实现。大部分算法设计首先依赖于数据结构的构造，这将深远影响到程序的时间效率和空间效率，以及程序结构的合理性和程序阅读的简易性。计算机界著名人士尼克劳斯·沃思（Wirth N.）提出的“算法+数据结构=程序”的观点正说明数据结构的重要性，即使在面向过程转向面向对象程序设计的今天，对象底层的函数实现依然能体现这句至理名言的准确性。
本人从事数据结构教学已有近三十年，多年教学实践中深深体会到数据结构是计算机专业的一门很难的课程，学生普遍反映过于抽象和难以编程实现。这反映了几个现实问题： 其一，高级语言课程所教授的内容离数据结构编程需求有一定的距离，高级语言教程通常更多讨论的是数值计算方面的程序设计范例，对于离散结构的讨论相对偏少。其二，算法设计是数据结构的后续课程，很多设计思想在数据结构课程中暂时无法起到引导作用。其三，从数据结构本身看，教材结构或书写方式有时成了学习过程的阻碍。部分数据结构教材偏重理论，全部用算法表述数据结构相关程序设计思想，导致学生可以模仿编程的范例不够，实际效果不大理想。部分教材由于源于翻译国外教材的原因，术语和描述生涩难懂。部分教材重点难点不突出，整体结构不完整，增加了学生的学习困难。
学习数据结构是一种“痛并快乐着”的过程，在学习的时候大部分学生都会感到过于抽象和高深，但是如果能用程序具体实现，就会感到成就感，会多次被计算机科学家的奇思妙想所震撼，会发现程序设计非常的引人入胜，会发现整个过程是充满挑战和乐趣的。
本教材最大的特色就是全面给出数据结构的相关程序构建源码，使得学生有一个可以研究、探讨、模仿、提高的平台。提供的程序构建范例都具有实用性和趣味性，覆盖了多种程序设计方法和界面设计风格，供学生研究使用。
全书体系结构完整、注重原理与实践结合，重点和难点突出，为学生搭建了一个很全面的学习研究平台。其目标是努力满足学生易于学习，老师易于组织教学。鉴于部分学生C++的编程能力不能满足数据结构课程的要求，本教材全面提供了各种程序界面的细节设计。数据输入方面提供了键盘输入、内部预置、随机产生、文件读入等多种方式供读者模仿学习。递归思想在数据结构的讨论中大量出现，本教材单独一章先行讨论，给学生提供了一个良好的基础。排序在完成线性表之后先讲基本部分，体现了线性表的实际使用，而进阶部分涉及到更复杂的数据结构，放在大部分数据结构学习完成之后讲解。另外为了较为全面地体现数据结构的整体关系，本教材专门讨论了广义表的实现，这部分构成了线性结构和非线性结构的桥梁，供学生了解掌握。
全书共分15章，按照数据结构学习的基础知识、理论知识和应用等三大部分来编写。第一部分涉及学习数据结构的基本概念、C++复习与归纳、递归思想，第二部分涉及线性数据结构、非线性数据结构，包含线性表、栈、队列、字符串、二维数组、树和森林、二叉树、图。第三部分涉及查找、排序等基础应用。为了拓展数据结构的知识，介绍了广义表和文件的基础内容。
本书配有电子教案和程序源代码，便于老师和学生教学使用。本书采用C++语言编程实现，程序均在VC++6.0下调试运行通过。
数据结构是程序开发的基础，是进入程序设计殿堂的敲门砖。本教材是我多年来勤恳敬业、认真教学和仔细思考的结晶，在付出了很多艰辛之后终于有了今天的收获，希望读者能分享和品味学习的乐趣。
我要感谢我的父母，他们给予了我生命和不断进步的力量，也希望在此专门表达对我爱妻的感激，能写出这本教材，也是对她几十年给我无微不至的关怀和帮助的最好回报，在我的心中她是一个完美的女性，还有我诸多朋友的鼓励和支持让我不能忘怀。
我要感谢我多年前在清华大学研习人工智能研究生课程指导老师石纯一教授，他对专业的精通、做事的认真以及平易近人的态度让我的一生都受益匪浅，那段时光是我一生的回忆和骄傲。
我非常感谢我的领导和同事，在我多年讲授数据结构过程中给予我很多的支持和鼓励。他们是蒋伟荣教授、姜木霖教授、史旅华教授、付勇智教授、陈宇峰教授，还有朱贤成主任、陈利老师、袁科老师、张吴波老师、梅琴老师、裘子煦老师对我的帮助。
本书能够顺利出版，得益于清华大学出版社刘向威博士全力的支持和鼓励，以及细致的审稿和深入全面的建议，深深地感谢他。
我要感谢多年来参与程序编写测试、文字校对的学生团队，他们当中有许多我的得意弟子。如文贵华、马哲江、王康、吴倩、张鑫、刘鑫、傅四意、刘杰、陈洪艳、吴清霞、余新、张世杰等等。
本教材由付勇智老师帮助书写了第2章与第15章，内蒙古师范大学孟繁军老师帮助书写了第10章的部分程序源码，其他部分由本人完成。
各位老师可以来信联系程序源码和其他教学资料，希望读者提出宝贵的意见和建议，以便再版时改进和提高。
马春江于湖北汽车工业学院
2012年5月
目录
第1章数据结构基础
1.1面式思维和点式思维
1.2数据结构背景
1.3数据结构的应用案例
1.4数据结构基本概念
1.5逻辑结构分类
1.6存储结构分类
1.7数据结构基本操作
1.8算法和算法效率分析基础
1.9对象的设计
1.10C++语言常见知识点复习系统程序构建
1.11本章总结
习题
第2章递归思想与程序构建
2.1引言
2.2简单递归思想
2.3复杂递归思想
2.4递归思想应用的程序构建
2.5本章总结
习题
第3章线性表的构造与应用
3.1引言
3.2线性表的逻辑结构
3.3线性表的顺序存储
3.4线性表的链接存储
3.5线性表链接存储的变形
3.6线性表的静态链表实现
3.7线性表的应用案例
3.8线性表应用的程序构建
3.9本章总结
习题
第4章排序程序设计初步
4.1引言
4.2排序操作的基本概念
4.3基本排序算法设计
4.3.1排序算法设计基础
4.3.2直接插入排序（Direct Insert Sorting）
4.3.3简单选择排序（Simple Select Sorting）
4.3.4冒泡排序(Bubble Sorting)
4.3.5静态链表插入排序（Static Link Insert Sorting）
4.4基本排序程序设计实现
4.5排序的应用案例
4.6基本排序应用的程序构建
4.7本章总结
习题
第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队列应用的程序构建
6.8本章总结
习题
第7章串的构造与应用
7.1引言
7.2串的逻辑结构
7.3串的顺序存储
7.4串的链接存储
7.5串的索引存储
7.6串的应用案例
7.7串应用的程序构建
7.8本章总结
习题
第8章二维数组的构造与应用
8.1引言
8.2二维数组的逻辑结构
8.3二维数组的顺序存储
8.4特殊矩阵的压缩存储
8.5稀疏矩阵的压缩存储
8.6稀疏矩阵的十字链表存储
8.7二维数组的应用案例
8.8程序设计案例小型游戏推箱子软件
8.9本章总结
习题
第9章广义表的构造与应用
9.1引言
9.2广义表的逻辑结构
9.3广义表的链接存储
9.4表结构的应用案例
9.5广义表应用的程序构建
9.6本章总结
习题
第10章树和森林的构造与应用
10.1引言
10.2树的逻辑结构
10.3树的顺序存储
10.4树的链接存储
10.5树的顺序和链接联合存储法
10.6树的应用案例
10.7本章总结
习题
第11章二叉树的构造与应用
11.1引言
11.2二叉树的逻辑结构
11.3二叉树的顺序存储
11.4二叉树的链接存储
11.5二叉树的根序遍历和程序设计
11.5.1根序遍历的定义和递归算法实现
11.5.2根序遍历的非递归算法实现
11.6二叉树的层次遍历和程序设计
11.7二叉树其他相关程序构建
11.8线索二叉树
11.8.1线索二叉树的定义、逻辑结构及存储结构
11.8.2线索二叉树的算法设计
11.9二叉树的应用案例
11.10树、森林和二叉树的关系
11.11二叉树应用的程序构建
11.12本章总结
习题
第12章图的构造与应用
12.1引言
12.2图的逻辑结构
12.3图的顺序存储
12.4图的链接存储
12.5遍历操作的程序设计
12.6公路网最短路径的研究
12.7AOV网与拓扑排序的研究
12.8图应用的程序构建
12.8.1最小生成树的定义
12.8.2构造最小生成树的Prim算法
12.8.3构造最小生成树的Kruskal算法
12.9本章总结
习题
第13章查找程序设计
13.1引言
13.2查找的基本概念
13.3基于静态数据结构的查找
13.3.1静态查找表与顺序查找
13.3.2有序表的折半查找
13.3.3有序表的斐波那契查找和插值查找
13.3.4分块查找
13.4基于动态数据结构的查找
13.4.1二叉排序树与相应的查找技术
13.4.2平衡二叉树
13.5基于哈希表结构的查找
13.5.1哈希表的定义和构成
13.5.2常见的哈希函数
13.5.3哈希表的查找过程和冲突解决方法
13.6基于字符串结构的快速查找
13.7查找的应用案例
13.8查找应用的程序构建
13.9本章总结
习题
第14章排序程序设计进阶
14.1引言
14.2折半插入排序技术
14.3希尔排序技术
14.4快速排序技术
14.5树形选择排序技术
14.6堆排序技术
14.7归并排序技术
14.8基数排序技术
14.9复杂排序程序设计实现
14.10复杂排序应用的程序构建
14.11本章总结
习题
第15章文件结构初步
15.1引言
15.2文件的逻辑结构
15.3顺序文件
15.4索引文件
15.5索引顺序存取方法文件
15.6虚拟存储存取方法文件
15.7直接存取文件(散列文件)
15.8多重表文件和倒排文件
15.9文件的应用案例
15.10文件应用的程序构建
15.11本章总结
习题
参考文献
[1]