种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

数据结构与程式构建

(2019-11-08 08:07:17) 百科综合
数据结构与程式构建

数据结构与程式构建

《数据结构与程式构建》是2012年清华大学出版社出版的图书。

基本介绍

  • 书名:数据结构与程式构建
  • 定价:39元
  • 出版社:清华大学出版社
  • 出版时间: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本章总结
习题
参考文献

标 签

搜索
随机推荐

Powered By 种豆资源网||