1、高职高专“十一五 ”规划示范教材数据结构简明教程(C语言描述)徐翠霞主编内 容 简 介本书系统地介绍了各种常用的数据结构,内容丰富,概念讲解清楚,叙述严谨流畅,逻辑性强。书中配备了大量的案例,每个案例都经过精心的考虑,既能帮助读者理解知识,又具有启发性。本书对给出的每一种算法,均先描述了它的基本思路和要点,使得算法清晰易读,便于学生理解和掌握。本书共分9章,内容包括绪论,线性表,栈和队列,串、多维数组和广义表,树和二叉树,图,查找,排序和综合实训。本书可作为全国高等学校计算机类专业或信息类专业的教材,也可供广大从事计算机工程与应用的科技工作者参考。图书在版编目(CIP)数据数据结构简明教程:C
2、语言描述/徐翠霞主编.北京:北京航空航天大学出版社,2009.9ISBN978 7 81124 879 1.数.徐.数据结构-高等学校-教材C语言-程序设计-高等学校-教材.TP311.12 TP312中国版本图书馆CIP数据核字(2009)第142827号数据结构简明教程(C语言描述)徐翠霞主编责任编辑魏军艳*北京航空航天大学出版社出版发行北京市海淀区学院路37号(100191)发行部电话:010 82317024 传真:010 82328026http:/ Email:印刷厂印装 各地书店经销*开本:787960 1/16 印张:18 字数:403千字2009年9月第1版 2009年9月
3、第1次印刷 印数:3000册ISBN978 7 81124 879 1 定价:35.00元(含光盘1张)1 前言在计算机及其应用的各个领域中,都会用到各种各样的数据结构,学会分析、研究计算机加工对象的特性,选择合适的数据结构和存储表示,以及编制相应的实现算法,是计算机工作者不可缺少的技能。因此,“数据结构”是高等院校计算机专业教学中的一门重要的专业基础课。在我国当前的计算机专业教学计划中,它是核心课程之一。目前,市面上大多数有关“数据结构” 的教材都采用传统编 排模式,先是总体介绍,然后是基础知识,再是算法体系等。这种方法以知识点为主线,拘泥于语法细节,而忽略了程序本身的重要性。基于案例教学过
4、程的实践和思考,更是为了培养读者的编程能力,编者提出了这样一个问题:能不能打破传统教材和讲授模式,先以案例入手 ,提出解决问题的方法和思路,分析问题需要的知识点,然后根据需要讲解知识点,再解决提出的问题,最后举一反三,并以应用实例加以提升和巩固知识点,实现综合应用的目的。适合这样讲授的教材或参考书目前市面上很少,编者经过不断探讨并通过多年的案例教学经验积累,最终形成了本书。案例教学是计算机语言教学最有效的方法之一。好的案例对学生理解知识、掌握如何应用知识十分重要。本书以指导案例教学为目的,围绕教学内容组织案例,对学生的知识和能力训练具有很强的针对性,主要特色如下:(1)以知识线 索设计案例,分
5、解知识点,有明确的目的和要求,针对性强。(2)选择有代表性的案例,突出重点知识的掌握和应用。(3)将技术 指导、代码与分析、 应用提高、相关知 识有机结合。(4)注意新方法、新技 术的应用。(5)处理好具体 实例与思想方法、局部知识应用与综合应用的关系。(6)强调实用性,培养应用能力。本书中每一个案例的结构模式为“案例说明案例目的技术要点代码及分析相关知识及注意事项” 。每一章均包含多个案例,并配有相 应的习题。通过强化案例和实训教学,加深学生对理论知识的理解。本书在内容的组织上,本着由浅入深、循序渐进的原则,注重基本知识和基本概念的介绍,结合案例重点介绍实用性较强的内容,对难度过大的内容只作
6、少量介绍,使学生有的放矢,掌握所学内容。本书注重培养学生的实际应用技能和综合解决问题的能力,使学生能熟练掌握和运用理论知识解决实际问题,达到学以致用的目的,能真正地为培养新世纪的适用型人才出一份力。2 本书配有教学光盘。其内容兼顾了随教学进度安排的特色实验,也考虑到全部教学内容完成后的课程设计和模拟试题,因此教学光盘是本书的最佳教学辅助资料。本书由潍坊学院的徐翠霞担任主编。参与本书编写工作的有:潍坊学院徐翠霞,山东潍坊科技学院谭娟,山东潍坊职业学院姜伟强和广东省惠州学院计算机系赵义霞。其中,第3章、第5章、第6章和整个教学光盘由徐翠霞编写;第2章和第7章由谭娟编写;第8章和第9章由姜伟强编写;
7、第1章和第4章由赵义霞编写。全书由徐翠霞负责统稿。由于时间仓促,加之作者水平有限,若书中有疏漏和不足,恳请广大读者批评指正,以使本书得以改进和完善。编者2009年6月数据结构简明教程(C语言描述) 1 目录第1章绪论1.1 基本概念和术语1案例1.1 数据模型的确定11.2 算法和算法评价4案例1.2 矩阵乘法算法的时间复杂度分析4本章小结7习题1 8第2章线性表2.1 线性表的顺序存储9案例2.1 模拟集合的基本运算92.2 线性表的链式存储18案例2.2 一元多项式的加法运算18案例2.3 采用循环链表模拟约瑟夫(Josephus)问题32本章小结38习题2 38第3章栈和队列3.1 栈4
8、0案例3.1 数制转换(十进制数转换为二、八、十六进制数)40案例3.2 后缀表达式的求值503.2 栈与递归57案例3.3 迷宫问题573.3 队列65案例3.4 农夫过河问题65本章小结79习题3 79第4章串、多维数组和广义表4.1 串80案例4.1 模拟“天书密 码” 的生成和破解80案例4.2 无回溯的模式匹配882 4.2 多维数组和广义表97案例4.3 稀疏矩阵的转置97本章小结109习题4 109第5章树和二叉树5.1 树和二叉树的存储表示111案例5.1 完全二叉树的基本运算1115.2 树和二叉树的遍历123案例5.2 表达式树的构造及输出1235.3 线索二叉树135案例
9、5.3 中序线索二叉树及其遍历1355.4 哈夫曼树及其应用141案例5.4 哈夫曼编码器141本章小结148习题5 148第6章图6.1 图的存储和遍历150案例6.1 图的连通性判定1506.2 最小生成树和最短路径165案例6.2 局域网络布线问题1656.3 有向无环图及其应用178案例6.3 教学计划的编制178本章小结187习题6 187第7章查找7.1 线性表的查找189案例7.1 学生信息表的分块查找1897.2 树表的查找200案例7.2 借助二叉排序树实现单词统计2007.3 散列表的查找215案例7.3 散列表的双散列探测查找215本章小结226习题7 226数据结构简明
10、教程(C语言描述) 3 第8章排序8.1插入排序227案例8.1 希尔排序2278.2 交换排序233案例8.2 双向冒泡排序2338.3 选择排序238案例8.3 堆排序2388.4 归并排序和基数排序245案例8.4 链式基数排序245本章小结253习题8 253第9章综合实训实训1停车场管理255实训2五叉路口交通灯的管理系统264本章小结270习题9 271附录常用数据结构的类型定义参考文献目录 1 第1章绪论教学目标与要求:本章主要介绍数据结构中常用的基本概念和 术语以及学习数据结构的意义。通过本章的学习,要求:?熟悉各名词、术语的含义,掌握基本概念,特别是数据的逻辑结构和存储结构之
11、间的关系。分清哪些是逻辑结构的性质,哪些是存储结构的性质;掌握集合、线性结构、树和图等常用的数据结构。?掌握算法的特性和算法描述的方法。?掌握评价算法的一般规则,算法的时间复杂度的定义和数量级表示,时间复杂度在最好、平均、最坏3种情况下的含义,算法的空间复杂度的定义和数量级表示。?掌握计算语句频度和估算算法时间复杂度的方法。教学重点与难点:本章重点是了解数据结构的逻辑结 构、存储结构及数据的运算3方面的概念及相互关系,难点是算法复杂度的分析方法。1.1 基本概念和术语案例1.1 数据模型的确定【案例说明】在程序设计课程的学习中,计算机解题的基本方法是:分析问题,确定数据模型; 设计相应的算法;编写程序;反复调试程序直至得到正确的结果。有些问题的数据模型可以用具体的代数方程、矩阵等来表示。然而,更多的实际问题是无法用数学方程来表示的。对于下面的3个问题,试分别设计出合适的数据模型或数据结构。(1)图书馆的书目检索系统自动化问题。(2)计算机和人 对弈问题。(3)多叉路口交通灯的管理问题。【案例目的】(1)了解数据结构的基本概念和术语,能够根据需求为实际问题确定合适的数据模型。(2)掌握线 性表、树和图3种数据结构的基本特点。2 【技术要点】(1