程序设计基础与数据结构

程序设计基础与数据结构"

作者:戚桂杰、姚云鸿、张新
ISBN:9787302160687
定价:¥38
字数:千字
页数:
出版时间:2008.03.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书包括程序设计基础与数据结构两部分内容。在程序设计基础部分,讲述了C语言程序设计方法,主要包括程序设计基本概念、数据类型、程序控制、指针、函数、文件和大型程序设计原理与方法等内容。在数据结构部分,介绍了线性表、栈、队列、树、二叉树、查找表等基本数据结构以及相应的算法和相关应用。数据结构部分的所有算法皆以C语言为描述语言。

本书注重理论联系实际,概念清晰,论述严谨,通俗易懂。

本书可作为信息管理与信息系统专业或计算机类相关专业的本科或专科教材,也可供编程爱好者学习参考。

前言

程序设计基础与数据结构是信息管理与信息系统专业必修的一门核心课程,该课程的目的是培养学生的程序设计理念,使学生能掌握程序设计的基本方法,了解最常用数据结构的逻辑特性、存储表示以及对这些数据结构的操作算法,并通过课程学习与上机实习进行复杂程序设计的训练,为学习本专业后续相关专业课程打下坚实的基础。

作者以《中国高等院校信息系统学科课程体系2005》为依据,针对该课程所要求的知识点,结合作者多年的教学及应用方面的经验,设计了本书的体系结构并在内容取舍上做了精心的安排。本书包括程序设计基础与数据结构两部分内容,并以C程序设计语言为工具介绍相应内容。

全书共13章。第1章至第7章为程序设计基础的内容,包括程序设计的基本概念,数据类型、运算符与表达式,程序控制语句,函数与数组,指针与结构体,文件,大型程序的设计与调试等; 第8章至第13章为数据结构的内容,包括数据结构的基本概念,线性结构,树和二叉树,排序,查找,文件组织等。

本书在内容取舍及写法上力求条理清晰、层次分明、简明扼要、循序渐进,便于读者学习。按照本课程及本书的设想,读者将通过程序设计基础内容的学习,掌握程序设计的基本知识和基本方法,为学习数据结构打下一定的基础; 在随后的数据结构内容学习中,不仅掌握数据结构的相关知识,也通过其中数据结构相关操作算法的实现及理解,进一步提高程序设计的能力。

本书由戚桂杰、姚云鸿担任主编,刘位龙、贾晓毅担任副主编,参加本书编写的主要人员还有李楠、王颖、王翠翠、焦丽媛、张海涛、李明明、曹刚、李亚伟。全书由戚桂杰、姚云鸿提出整体框架、组织讨论编写计划并负责统稿工作。本书的出版得到了清华大学经济管理学院常务副院长陈国青教授、中国人民大学信息学院陈禹教授、山东大学管理学院院长徐向艺教授的诸多指导和大力支持,担任本书主审的山东经济学院张新教授对本书提出了许多中肯的意见,清华大学出版社的索梅女士、李玮琪女士为本书的顺利出版提供了莫大的帮助,在此表示衷心的感谢。此外,在本书的写作过程中,参阅和引用了国内外有关专家学者的论著,因篇幅所限,可能未全部一一列出,在此一并致谢。由于时间仓促及水平有限,书中难免有不当之处,敬请读者批评指正。

目录

第1章程序设计的基本概念

1.1程序设计和程序设计语言

1.1.1程序与软件

1.1.2程序设计语言的发展

1.1.3计算机如何运行程序

1.2C语言概述

1.2.1C语言的发展

1.2.2C程序的结构

1.2.3C语言字符集

1.2.4C语言的特点

1.3算法

1.3.1问题求解过程

1.3.2算法及其表示

1.3.3简单算法举例

1.3.4用流程图表示算法

1.3.5三种基本算法结构和改进的

流程图

1.3.6用NS流程图表示算法

1.3.7用伪代码表示算法

1.3.8用计算机语言表示算法

1.4结构化程序设计方法 

1.5本章小结

习题1

第2章数据类型、运算符与表达式

2.1C语言的数据类型

2.2标识符

2.3常量与变量

2.3.1常量和符号常量

2.3.2变量

2.4整型数据

2.4.1整型常量的表示方法

2.4.2整型变量

2.5实型数据

2.5.1实型常量的表示方法

2.5.2实型变量

2.5.3实型常量的类型

2.6字符型数据

2.6.1字符常量

2.6.2转义字符

2.6.3字符变量

2.6.4字符数据在内存中的存储形式及

使用方法

2.6.5字符串常量

2.7变量赋初值

2.8各类数值型数据之间的

混合运算

2.8.1自动类型转换

2.8.2强制类型转换

2.9算术运算符和算术表达式

2.9.1C运算符简介

2.9.2算术运算符和算术表达式

2.10赋值运算符和赋值表达式

2.10.1赋值运算符

2.10.2类型转换

2.10.3复合的赋值运算符

2.11逗号运算符和逗号表达式

2.12本章小结

习题2

第3章C程序语句

3.1C程序语句概述

3.2顺序程序设计

3.2.1数据输入输出的概念及在C语言

中的实现

3.2.2字符数据的输入输出

3.2.3格式输入与输出

3.2.4顺序结构程序设计举例

3.3选择结构程序

3.3.1关系运算符和关系表达式

3.3.2逻辑运算符和表达式

3.3.3if语句

3.3.4switch语句

3.3.5程序举例

3.4循环控制

3.4.1概述

3.4.2goto语句以及用goto语句

构成循环

3.4.3while语句

3.4.4dowhile语句

3.4.5for语句

3.4.6循环的嵌套

3.4.7几种循环的比较

3.4.8break和continue语句

3.4.9程序举例

3.5本章小结

习题3

第4章函数与数组

4.1函数概述

4.2函数定义的一般形式

4.2.1类型标识符与return语句

4.2.2形式参数和实际参数

4.3函数调用

4.3.1函数调用的一般形式

4.3.2函数嵌套调用与递归调用

4.4函数作用域规则

4.4.1局部变量与外部变量

4.4.2动态存储变量与静态存储变量

4.4.3内部和外部函数的说明

4.5数组

4.5.1一维数组

4.5.2二维数组

4.5.3数组应用程序举例

4.5.4字符数组

4.6预处理命令

4.6.1宏定义

4.6.2文件包含

4.6.3条件编译

4.7本章小结

习题4

第5章指针与结构体

5.1指针概述

5.1.1指针是地址

5.1.2指针变量及其定义

5.1.3指针变量作函数参数

5.2数组与指针

5.2.1一维数组与指针

5.2.2多维数组与指针

5.2.3字符串与指针

5.2.4指针数组

5.3指针与函数

5.3.1函数指针变量

5.3.2指针型函数

5.3.3多级指针

5.3.4指针数组作main()的参数

5.4结构体

5.4.1结构体类型的定义

5.4.2结构体类型变量的定义

5.4.3结构体变量的引用

5.4.4结构体变量的初始化

5.4.5结构体数组

5.4.6结构体与指针

5.5共用体

5.5.1共用体的概念

5.5.2共用体变量的引用

5.6其他数据类型

5.6.1枚举类型

5.6.2类型定义符typedef

5.7位操作

5.7.1位运算

5.7.2位段

5.8本章小结

习题5

第6章文件

6.1文件概述

6.1.1与文件有关的概念

6.1.2文件指针

6.2文件的打开与关闭

6.2.1文件的打开(fopen函数)

6.2.2文件关闭

6.3文件的输入输出

6.3.1读写文件中字符的函数

6.3.2数据块读写函数fread()和

fwrite()

6.3.3字符串读写函数fgets()和fputs()

6.3.4格式读写函数fscanf()和fprintf()

6.3.5其他输入输出函数

6.4文件的定位

6.4.1ftell()函数

6.4.2文件头复位函数rewind()

6.4.3文件的随机定位函数fseek()

6.5出错的检测

6.6典型实例

6.7常见的编程错误

6.8本章小结

习题6

第7章大型程序的设计与调试

7.1大型程序的开发过程

7.1.1需求分析

7.1.2软件设计的任务

7.1.3编码

7.1.4软件测试

7.2大型程序的设计原理

7.2.1使用抽象管理复杂性

7.2.2自顶而下、逐步求精的设计策略

7.2.3模块化程序设计

7.2.4重用代码

7.3C语言大型程序的几种开发机制

7.3.1模块的实现

7.3.2多模块程序的编译、连接

7.3.3标识符的连接属性

7.3.4条件编译

7.4大型程序的测试

7.4.1测试技术

7.4.2测试步骤

7.4.3调试

7.5程序设计实例

7.5.1链表简介

7.5.2需求分析

7.5.3总体设计

7.5.4函数设计

7.5.5头文件设计

7.5.6算法分析

7.5.7实现文件设计

7.5.8测试

7.6本章小结

习题7

第8章数据结构基本概念

8.1数据结构实例

8.2基本概念和术语

8.2.1数据

8.2.2数据结构

8.2.3存储结构

8.2.4抽象数据类型

8.2.5抽象数据类型的表示与实现

8.3算法的评价

8.4本章小结

习题8

第9章线性结构

9.1线性结构概述

9.2线性表的类型定义

9.2.1线性表的定义

9.2.2线性表的抽象数据类型定义

9.3线性表的顺序表示和实现

9.4线性表的链式表示和实现

9.5线性表的其他链式表示

9.5.1静态链表

9.5.2循环链表

9.5.3双向链表

9.6线性表的应用举例

9.7栈

9.7.1栈的定义

9.7.2栈的抽象数据类型定义

9.7.3栈的顺序表示和实现

9.7.4栈的链式表示和实现

9.8栈的应用举例

9.8.1数制转换

9.8.2迷宫问题

9.8.3栈与递归——汉诺塔问题

9.9队列

9.9.1队列的定义

9.9.2队列的抽象数据类型定义

9.9.3队列的顺序表示和实现

9.9.4队列的链式表示和实现

9.10队列的应用举例

9.11本章小结

习题9

第10章树和二叉树

10.1树

10.1.1树的定义

10.1.2树的基本术语

10.1.3树的性质

10.1.4树的表示

10.2二叉树

10.2.1二叉树的定义

10.2.2二叉树的性质

10.2.3二叉树的表示和实现

10.3线索二叉树

10.4树和森林

10.4.1树的存储结构

10.4.2森林和二叉树的转化

10.4.3树和森林的遍历

10.5霍夫曼树及其应用

10.5.1基本术语

10.5.2霍夫曼树的构造

10.5.3霍夫曼树的应用

10.6本章小结

习题10

第11章排序

11.1概述

11.2插入排序

11.2.1直接插入排序

11.2.2改进的插入排序

11.2.3希尔排序

11.3交换排序

11.3.1起泡排序

11.3.2快速排序

11.4选择排序

11.4.1简单选择排序

11.4.2堆排序

11.5归并排序

11.6各种内部排序方法的比较讨论

11.7外部排序

11.8本章小结

习题11

第12章查找/检索

12.1基本概念

12.2静态查找表

12.2.1顺序查找

12.2.2折半查找

12.2.3分块查找

12.3二叉查找树

12.3.1二叉查找树的查找

12.3.2二叉查找树的插入

12.3.3二叉查找树的删除

12.3.4平衡二叉树

12.4B树

12.4.1B树的定义与示例

12.4.2B树查找

12.4.3B树的插入

12.4.4B树中的删除

12.4.5B+树

12.5散列表查找

12.5.1基本概念

12.5.2散列函数

12.5.3冲突的处理

12.5.4散列表查找及性能分析

12.6本章小结

习题12

第13章文件组织

13.1文件概述

13.1.1文件的概念

13.1.2文件的逻辑结构

13.1.3文件的物理结构

13.1.4文件的操作

13.2顺序文件

13.2.1顺序文件概述

13.2.2顺序文件的操作

13.3直接文件(散列文件)

13.3.1桶散列

13.3.2可扩展散列

13.4索引文件

13.5索引顺序文件

13.5.1ISAM

13.5.2VSAM文件

13.6倒排文件

13.7本章小结

习题13

附录ATurbo C 3.0集成开发环境

的使用

A.1Turbo C 3.0简介和启动

A.2Turbo C 3.0集成开发环境

A.3C程序上机执行过程

A.4C程序的调试

A.4.1编译、连接时常见错误

A.4.2程序的动态调试

附录B参考术语表

参考文献

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个