C/C++与数据结构

C/C++与数据结构"

作者:王立柱
ISBN:9787900641410
定价:¥35
字数:千字
页数:
出版时间:2002.03.01
开本:
版次:1-2
装帧:
出版社:清华大学出版社
简介

前言

C/C++与数据结构为了适应计算机科学的飞速发展和社会对计算机综合人才的广泛需求,计算机基础教育必须改革,改革的目标就是综合。这本教材便是这种改革实践4年的总结,它将C语言、数据结构和C++综合为一门程序设计基础课程,可以不分专业,在大学一年级完成(授课80学时,实验80学时)。

计算机科学越来越趋向综合,C++这门代表着最先进的程序设计方法的语言本身就代表着综合,它的第一个代表性的概念“类”便是对数据和操作的综合。

而综合绝不意味着拼凑、肤浅和庞杂,改革实践表明,综合带来了深入、统一、明确和简约,从而使面向对象的程序设计方法和C++可以面向更广泛的对象,使“数据结构”这门计算机专业最为核心的课程可以成为每一个人学习计算机的基础。我们愿意把改革的成果与读者共享。

第1章机器语言程序简介。在模型计算机指令系统的基础上,以机器语言程序的形式,讲解对程序设计者来说最重要的硬件知识。我们的目的不是要编写机器语言程序,而是因为这些知识随着程序设计的深入,不断在引申、推广、抽象,所以,具体而明确地掌握这些知识,是我们继续学习的基础。

第2章C语言基础。我们直接从变量和指针、数组和指针、函数和指针的关系入手,讲解C语言。指针即地址,它和函数构成C语言的核心。传统的方法都是通过变量名引进C程序,而尽可能推迟讲解指针,甚至淡化指针,以便减轻理解C语言的难度。可是指针是C语言的核心,它是理解C程序,解决C程序问题的关键。

第3章数据结构概论。本章阐述了数据结构、数据类型、算法和程序的概念以及它们之间的关系,并且通过实例介绍程序设计的一般方法。

第4、5、6章分别讲解了顺序表、顺序队列和顺序栈。通过构造新的数据类型,表明我们进入了真正的程序设计阶段,开始了能动地、创造性地学习程序设计。

第7章字符串。本章首先介绍了C语言已具备的字符串类型(简称C串),然后结合字符串处理中的模式匹配问题,在指出C串的局限性的同时,创建新的串类型(简称新串)。

第8、9章分别讲解了链表和链队列。通过与顺序存储结构对比,指出后者的不足,从而构造出新的存储模式——链式存储结构。并综合所学内容,设计了银行窗口服务的模拟程序——事件驱动模拟程序。

第10章二叉树。从本章开始进入非线性部分。二叉树是研究其他非线性结构的基础。我们先后使用递归和非递归两种方法讲述遍历,并把很多典型的算法作为遍历的直接应用。

第11章树。本章通过具体的遍历算法阐明树和二叉树之间的等价关系;作为树的遍历算法的应用,介绍了八皇后问题的递归和非递归算法;最后,结合八皇后结果的图形输出设计,介绍了用C语言作图的基本知识。

第12章图。图是应用最广泛的非线性结构。本章研究并实现了图的典型算法:最小生成树、单源最短路径、拓扑序列和关键路径。

第13章C++程序。本章主要用C++描述已有的C程序,比如中缀表达式求值、串类等等,在对比中学习C++。

本书的特点是综合: 变量和指针,数组与指针,函数与指针是一个综合;C串与C++串是综合;快速排序和幂集问题归入前序遍历,hanio问题归于中序遍历,堆排序和哈夫曼树是堆类的直接应用,八皇后问题在树的前序遍历中解决,这是综合;迷宫归于图的层次遍历,骑士巡游隶属图的前序遍历,这还是综合。

本书的创新是从面向对象的高度设计C程序,为C++提供充分的感性基础。“C++不过是更好的C”,这在本书中得到充分的体现。C语言的不足由C++语言补充和改进,C++语言的深奥之处由C语言详述。在很多地方,C++程序是C程序的提炼,C程序是C++程序的展示。由此,学习C语言和学习C++语言成为一个过程。

本书的原则是学习数据结构和学习程序语言共进,它们的中介是算法。语言只有满足算法的需要,才能被认识和掌握。数据结构只有依赖语言的发展才能拓展自己的应用领域。

总之每一部分没有独立存在的理由,它们的意义只有在它们的相互依赖、相互补充的关系中得到明确的解答。

正是这种统一性,才产生了既可以助教又可以助学的多媒体软件——配书光盘。正是这种统一性,才使抽象类型和存储类型、算法每一步骤和程序每一行代码、C程序和C++程序可以同时展现,相得益彰。

我们迈出了改革的第一步——艰难的一步,为此感谢天津师范大学各级领导和同仁一直给予的关怀和支持。

目录

C/C++与数据结构第1章机器语言程序简介1

1.1电子计算机的基本组成及其工作过程1

1.2机器语言程序设计3

1.3子程序调用过程6

习题6第2章C语言基础7

2.1基本类型变量和指针7

2.2基本类型变量和运算11

2.2.1整型11

2.2.2字符型12

2.2.3实型13

2.2.4指针类型(地址类型)13

2.3一维数组和指针14

2.3.1指针14

2.3.2一维数组15

2.3.3一维数组和指针变量的比较16

2.4二维数组和指针18

2.4.1二维数组和二维指针变量18

2.4.2二维数组和一维指针变量21

2.4.3指针数组和指针的指针22

2.5结构与指针24

2.5.1结构变量24

2.5.2结构指针与数组27

2.6枚举类型29

2.7类型名选择30

2.8条件表达式与控制语句32

2.8.1关系运算32

2.8.2逻辑运算33

2.8.3条件控制语句33

2.8.4循环控制语句39

2.8.5break语句和continue语句42

2.9函数43

2.9.1函数与指针43

2.9.2函数调用与变量的存储类别49

2.9.3动态单元的分配和释放56

2.10与数组匹配的指针作为函数的参数58

2.11输入输出函数61

2.11.1printf函数61

2.11.2scanf函数63

2.11.3getchar函数和putchar函数66

2.12编译预处理67

2.13文件70

2.14初始化与赋值74

习题78第3章数据结构概论81

3.1数据结构和数据类型81

3.2算法和程序84

3.3算法分析87

习题90第4章顺序表91

习题98第5章顺序队列99

习题104

C / C ++与数据结构

第6章顺序栈105

6.1顺序栈的定义105

6.2中缀表达式求值109

习题115第7章字符串116

7.1C语言串116

7.2新类型串120

习题131第8章链表132

8.1单向链式存储结构132

8.2单向链表138

8.3双向链式存储结构142

8.4双向链表147

习题150第9章链队列152

9.1链队列的定义152

9.2事件驱动模拟154第10章二叉树165

10.1二叉树的概念和性质165

10.1.1树和二叉树的概念165

10.1.2二叉树的性质166

10.2二叉树的存储167

10.2.1顺序存储结构167

10.2.2链式存储结构169

10.3二叉树层次遍历170

10.3.1层次遍历170

10.3.2建立二叉链表172

10.3.3垂直输出二叉树173

10.4二叉树的前序遍历177

10.4.1前序遍历177

10.4.2求二叉树从根至叶子的所有路径179

10.4.3求集合的幂集182

10.4.4快速排序185

10.5二叉树中序遍历188

10.5.1汉诺塔问题188

10.5.2由前序和中序序列建立二叉链表190

10.6二叉树后序遍历192

10.7递归评估194

10.8递归遍历的模拟196

10.8.1递归前序遍历的模拟196

10.8.2递归中序遍历的模拟200

10.8.3递归后序遍历的模拟202

10.9堆205

10.10哈夫曼树211

10.10.1哈夫曼树的定义211

10.10.2建立哈夫曼树212

10.10.3哈夫曼编码215

10.11二叉搜索树216

10.12平衡二叉搜索树223

10.13线索二叉树230

习题234第11章树236

11.1树的存储与遍历236

11.1.1树的存储236

11.1.2树的层次遍历240

11.1.3树的前序遍历242

11.1.4树的后序遍历247

11.2八皇后问题249

11.3八皇后解的图形输出253

11.3.1图形系统初始化253

11.3.2图形设计与实现254

习题262第12章图263

12.1图的概念和存储263

12.1.1图的概念263

12.1.2邻接矩阵表示法264

12.1.3邻接表表示法268

12.2图的遍历269

12.2.1广度遍历269

12.2.2深度遍历271

12.3最小生成树273

12.4单源最短路径278

12.5拓扑排序283

12.6关键路径286

12.7迷宫求解290

12.8骑士巡游和汉密尔顿路297

习题300第13章C++程序301

13.1C++ 对C 的基本扩充301

13.1.1注释和输入输出语句301

13.1.2作用域说明302

13.1.3缺省函数303

13.1.4引用304

13.1.5常量修饰符const305

13.1.6内存的动态申请和释放305

13.2C++的基本要素306

13.2.1类和对象306

13.2.2this指针311

13.2.3友元312

13.2.4运算符重载314

13.2.5初始化与赋值315

13.3重载317

13.3.1函数重载317

13.3.2运算符重载322

13.4形式数据类型326

13.4.1模板函数326

13.4.2模板类327

13.4.3中缀表达式求值329

13.5继承和抽象类332

13.5.1继承332

13.5.2派生类中的构造函数和析构函数335

13.5.3虚函数337

13.5.4纯虚函数和抽象类339

习题340

参考文献342

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个