没有合适的资源?快使用搜索试试~ 我知道了~
基于C#的数据结构电子书
3星 · 超过75%的资源 需积分: 50 10 下载量 49 浏览量
2010-09-24
11:23:55
上传
评论
收藏 1.66MB PDF 举报
温馨提示
试读
262页
本书分为 8 章,第 1 章介绍了数据结构和算法的基本概念及本书用到的数学和 C#的知识;第 2 章至第 6 章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET 框架中相应的数据结构;第 7、8 两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET 框架中相应的算法。 本书特点 将数据结构与 C#语言和.NET 框架结合是本书的一大特点。.NET 平台是微软推出的一个新的开发平台,目的是让“不同的语言共享同一平台”。.NET很可能成为下一代 Windows操作系统的一部分。而 C#语言作为新一代完全面向对象的语言,是.NET 的母言。本书所有的数据结构和算法都是用 C#语言进行描述,并在相应章节的末尾介绍了在.NET 框架中常用的数据结构和算法。用 C#在.NET 平台开发的技术人员可以从本书中获得许多有益的知识和 技术。
资源推荐
资源详情
资源评论
前言
数据结构(C#语言版)
前 言
编者在写这本书时遇到了两个问题。第一个问题是关于数据结构教材。应该说关于数
据结构的教材已经很多了。自从美国唐.欧.克努特教授用汇编语言写的《计算机程序设计
技巧》第一卷《基本算法》问世以来,已经出现了用 PASCAL、C、C++、JAVA 等语言写的
数据结构书。所以,在编者写本书之前,曾经感到很为难。目前,C#语言作为微软在新一
代开发平台.NET 推出的、完全面向对象的语言,凭着其简洁、高效、模板、标准化的特性,
使得 C#语言像程序设计语言中的一件艺术品,也吸引着越来越多的开发人员。这也使得我
院的可视化专业进行专业改革时,决定以 C#语言作为该专业的主要开发语言。所以说,用
C#语言来讲授《数据结构》课程是我院专业改革的结果。而用 C#语言写的数据结构教材目
前国内基本上是空白。鉴于此,编者决定写本书。
在接下来的写作过程中,编者遇到了另外一个问题,那就是 C#语言和.NET Framework
的发展。当作者写这本书时,是以 C#语言和.NET Framework 的 2.0 版本来写的。但是,到
目前为止,C#语言和.NET Framework 已经出现 3.0 版本了。这使得编者感到了微软技术的
发展之快,发出了“学习微软的东西在某种程度上是一种痛苦”之叹!也使编者曾产生了放
弃写该书的念头。但作为教师的责任和对新东西的执著使得编者一直坚持,直到该书完稿。
也附带说一句:如果读者在阅读过程中,发现有些技术不是最新的技术也不要惊奇,本书是
以 C#语言和.NET Framework2.0 版本来写的。
本书的内容
本书分为 8 章,第 1 章介绍了数据结构和算法的基本概念及本书用到的数学和 C#的知
识;第 2 章至第 6 章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的
数据结构及其应用,以及在.NET 框架中相应的数据结构;第 7、8 两章分别讨论了排序和查
找常用的各种方法及其应用以及在.NET 框架中相应的算法。
本书特点
将数据结构与 C#语言和.NET 框架结合是本书的一大特点。.NET 平台是微软推出的一
个新的开发平台,目的是让“不同的语言共享同一平台”。.NET 很可能成为下一代 Windows
操作系统的一部分。而 C#语言作为新一代完全面向对象的语言,是.NET 的母言。本书所有
的数据结构和算法都是用 C#语言进行描述,并在相应章节的末尾介绍了在.NET 框架中常用
的数据结构和算法。用 C#在.NET 平台开发的技术人员可以从本书中获得许多有益的知识和
技术。
使用配套光盘
本书配套光盘中包含以下内容:
1、 code 目录是本书所有的代码及一个《学生信息管理系统》的代码。code 目录包含
案例和 chapter1~chapter8 等 9 个子目录。
案例子目录中是《学生信息管理系统》的代码。《学生信息管理系统》是学生上学期学
习《C#初级编程》课程所做的一个小系统,是学生在没有学过《数据结构》课程时算法。
目的在于让学生比较采用数据结构和算法与不采用数据结构与算法的不同。所以,把这个小
的系统作为《数据结构(C#)》课程的学习素材。考虑到有些学校在选用本教材时学生没有
做过这个系统,所以,把代码全部给了出来。
chapter1~chapter8 等 8 个目录分别对应本书的相应章节。其中每个目录中的 source 子目
录是本书中的有关源代码,涉及各个数据结构的接口、结点类、数据结构类的 C#代码及常
用算法都放在相应章节目录下的 source 子目录中。
chapter1~chapter8 等目录中还有一个 project 子目录,里面有一个或多个项目,是使用各
种数据结构和常用的排序和查找算法来解决《学生信息管理系统》的项目,是案例内容在数
前言
数据结构(C#语言版)
据结构中的推广和延伸。所有的代码都没有完成,可作为教师教学、学生实验、课程设计等
的素材使用。其中,chapter1 中的 project 子目录是各个例题中问题应用的项目。chapter4 由
于 string 和 array 是经常使用的数据结构和数据类型,所以,没有 project 子目录而只有 source
子目录。chapter6 由于图的内容高职层次的学生很少涉及,所以也没有 project 子目录而只有
source 子目录。
2、 ppt 目录下是本书的电子课件,可作为教师教学参考、学生自学之用。
3、 pdf 目录下是本书的电子版本,可作为电子图书供读者在电脑上学习使用。
4、 pictures 目录下本书中比较大的图,是用 Microsoft Office Visio 2003 软件画的,目
的是为了让教师更好地备课与上课。主要是第 5 章以后章节的部分图。
5、 有一个 stuinfo.txt 文件,是 30 位虚拟学生的信息,可根据实际需要进行增删,但
必须修改相应的程序代码。
使用本书及光盘的工具
z Microsoft Visual Studio 2005(如果您想运行本书中的程序,那么您需要在计算机中
安装它);
z Microsoft Office PowerPoint 2003(如果您想使用 ppt 目录中的内容,那么您需要在
计算机中安装它);
z Microsoft Office Visio 2003(如果您想使用 pictures 目录中的内容,那么您需要在
计算机中安装它);
z Adobe Acrobat 7.0 Professional(如果您想使用 pdf 目录中的内容,那么您需要在计
算机中安装它);
致 谢
没有许多人的帮助,编者是不可能完成本书的。尤其要感谢下面这些人。
z 张应辉院长和胡锦德院长一直关注和支持可视化专业的专业改革。特别是胡院长,
亲自指导了专业改革,并多次询问该书的进度并对其中的问题给予指示。如果没
有二位领导,该书是不可能产生和完成的。
z 出版社的周凌波和郭朝晖老师为本书的修订和出版做了大量的工作。与他们的合
作非常愉快,他们尽力使本书的东西通顺流畅。没有他们的工作,本书不可能出
版。
z 最后,编者要感谢自己的家人。为了写这本书,编者投入了大量的时间和精力,
牺牲了许多的周末和节假日。没有胥璐(编者的妻子)和段楚榆(编者的女儿)
的支持,根本不可能有这本书的问世。多少次,编者都想花些时间陪伴家人,但
都因为本书而放弃了。现在,本书总算告一段落,编者可以有更多时间幸福地听
到女儿的笑声了。
尽管编者在写作过程中非常认真和努力,但由于编者水平有限,书中难免存在错误和
不足之处,恳请广大读者批评指正。如果您对本书或光盘有什么意见、问题或想法,欢迎您
通过下面的邮件通知编者,编者将不胜感激:
Email:
duanez@neusoft.com
请在邮件的主题栏中注明:数据结构(C#)。
编者
2006年 12 月
目录 I
第1章 绪论...........................................................................................................................1
1.1 数据结构...................................................................................................................1
1.1.1 学习数据结构的必要性...................................................................................1
1.1.2 基本概念和术语...............................................................................................1
1.2 算法...........................................................................................................................4
1.2.1 算法的特性............................................................................................................4
1.2.2 算法的评价标准....................................................................................................5
1.2.3 算法的时间复杂度................................................................................................6
1.3 数学预备知识...........................................................................................................7
1.3.1 集合...................................................................................................................7
1.3.2 常用的数学术语...............................................................................................8
1.3.3 对数...................................................................................................................8
1.3.4 递归...................................................................................................................9
1.4 C#预备知识.............................................................................................................10
1.4.1 接口.................................................................................................................10
1.4.2 泛型编程.........................................................................................................13
本章小结.................................................................................................................................20
习题一.....................................................................................................................................20
第2章 线性表.....................................................................................................................22
2.1 线性表的逻辑结构.........................................................................................................22
2.1.1 线性表的定义.....................................................................................................22
2.1.2 线性表的基本操作.............................................................................................22
2.2 顺序表.............................................................................................................................24
2.2.1 顺序表的定义.....................................................................................................24
2.2.2 顺序表的基本操作实现.....................................................................................29
2.2.3 顺序表应用举例.................................................................................................35
2.3 单链表.............................................................................................................................38
2.3.1 单链表的定义.....................................................................................................39
2.3.2 单链表的基本操作实现.....................................................................................46
2.3.3 单链表应用举例.................................................................................................56
2.4 其他链表.........................................................................................................................61
2.4.1 双向链表.............................................................................................................61
2.4.2 循环链表..............................................................................................................64
2.5 C#中的线性表.................................................................................................................64
本章小结.................................................................................................................................67
习题二.....................................................................................................................................67
第3章 栈和队列.................................................................................................................69
3.1 栈.....................................................................................................................................69
3.1.1 栈的定义及基本运算.........................................................................................69
3.1.2 栈的存储和运算实现.........................................................................................70
3.1.3 栈的应用举例.....................................................................................................82
3.1.4 C#中的栈.............................................................................................................87
3.2 队列.................................................................................................................................87
3.2.1 队列的定义及基本运算......................................................................................87
数据结构(C#语言版)
目录 II
3.2.2 队列的存储和运算实现.....................................................................................89
3.2.3 队列的应用举例...............................................................................................103
3.2.4 C# 中的队列.....................................................................................................104
本章小结...............................................................................................................................105
习题三...................................................................................................................................105
第4章 串和数组...............................................................................................................106
4.1 串...................................................................................................................................106
4.1.1 串的基本概念...................................................................................................106
4.1.2 串的存储及类定义...........................................................................................106
4.1.3 串的基本操作的实现.......................................................................................111
4.1.4 C#中的串...........................................................................................................115
4.2 数组...............................................................................................................................117
4.2.1 数组的逻辑结构...............................................................................................117
4.2.2 数组的内存映象...............................................................................................118
4.2.3 C#中的数组.......................................................................................................119
本章小结...............................................................................................................................121
习题四...................................................................................................................................121
第5章 树和二叉树...........................................................................................................123
5.1 树...................................................................................................................................123
5.1.1 树的定义...........................................................................................................123
5.1.2 树的相关术语...................................................................................................124
5.1.3 树的逻辑表示...................................................................................................125
5.1.4 树的基本操作...................................................................................................126
5.2 二叉树...........................................................................................................................126
5.2.1 二叉树的定义...................................................................................................127
5.2.2 二叉树的性质...................................................................................................128
5.2.3 二叉树的存储结构...........................................................................................129
5.2.4 二叉链表存储结构的类实现............................................................................132
5.2.5 二叉树的遍历...................................................................................................137
5.3 树与森林.......................................................................................................................141
5.3.2 树、森林与二叉树的转换...............................................................................144
5.3.3 树和森林的遍历...............................................................................................147
5.4 哈夫曼树........................................................................................................................147
5.4.1 哈夫曼树的基本概念........................................................................................147
5.4.2 哈夫曼树类的实现............................................................................................149
5.4.3 哈夫曼编码........................................................................................................153
5.5 应用举例...............................................................................................................154
5.6 C#中的树...............................................................................................................157
本章小结...............................................................................................................................158
习题五...................................................................................................................................159
第 6 章 图...........................................................................................................................161
6.1 图的基本概念................................................................................................................161
6.1.1 图的定义.............................................................................................................161
6.1.2 图的基本术语...................................................................................................161
数据结构(C#语言版)
目录 III
6.1.3 图的基本操作...................................................................................................165
6.2 图的存储结构...............................................................................................................166
6.2.1 邻接矩阵............................................................................................................167
6.2.2 邻接表...............................................................................................................172
6.3 图的遍历.......................................................................................................................185
6.3.1 深度优先遍历...................................................................................................185
6.3.2 广度优先遍历...................................................................................................188
6.4 图的应用.......................................................................................................................189
6.4.1 最小生成树.......................................................................................................189
6.4.2 最短路径...........................................................................................................199
6.4.3 拓扑排序...........................................................................................................207
本章小结...............................................................................................................................210
习题六...................................................................................................................................210
第7章 排序.......................................................................................................................213
7.1 基本概念.......................................................................................................................213
7.2 简单排序方法...............................................................................................................214
7.2.1 直接插入排序...................................................................................................214
7.2.2 冒泡排序...........................................................................................................216
7.2.3 简单选择排序...................................................................................................217
7.3 快速排序.......................................................................................................................219
7.4 堆排序...........................................................................................................................222
7.5 归并排序.......................................................................................................................230
7.6 基数排序.......................................................................................................................232
7.6.1 多关键码排序...................................................................................................232
7.6.2 链式基数排序...................................................................................................233
7.7 各种排序方法的比较与讨论.......................................................................................235
7.8 C#中排序方法...............................................................................................................235
本章小结...............................................................................................................................236
习题七...................................................................................................................................236
第8章 查找.......................................................................................................................238
8.1 基本概念和术语............................................................................................................238
8.2 静态查找表...................................................................................................................238
8.2.1 顺序查找...........................................................................................................238
8.2.2 有序表的折半查找...........................................................................................239
8.2.3 索引查找...........................................................................................................242
8.3 动态查找表...................................................................................................................243
8.4 哈希表...........................................................................................................................252
8.4.1 哈希表的基本概念...........................................................................................252
8.4.2 常用的哈希函数构造方法...............................................................................253
8.4.3 处理冲突的方法...............................................................................................254
8.5 C#中的查找方法...........................................................................................................256
本章小结...............................................................................................................................256
习题八...................................................................................................................................256
参考文献.......................................................................................................................................257
数据结构(C#语言版)
剩余261页未读,继续阅读
资源评论
- vnvlyp2014-05-16基本的数据结构书还行
xianhai427
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功