作者:empty 页数:262 出版社:empty |
致谢编者在写这本书时适到了两个问题。第一个问题是关于数据结构教材。应该说关于数在接下来的写作过程中, 编者遇到了另外一个问题, 那就是C#语言和.NET Framework木书分为8章,第1章介绍了数据结构和算法的基木概念及木书用到的数学和C#的知将数据结构与C#语言和, NET框架结介是木书的一人特点。.NET平台是微软推出的一本书配套光盘中包含以下内容:1、code目录是本书所有的代码及一个《学生信息管理系统》的代码, code目录包含案例子目录中是《学生信息管理系统》的代码。《学生信息管理系统》是学生上学期学chapter 1~chapter 8等8个目录分别对应木书的相应章节, 其中每个甘录中的source子目chapter 1-chapter 8等目录中还有一个project子目录, 里面有一个或多个项目, 是使用各2、ppt月录下是本书的电子课件, 可作为教师教学参考、学生自学之用,3、pdf目录下是本书的电子版本, 可作为电子图书供读者在电脑上学习使用,4、pictures目录下本书中比较大的图, 是用MicrosoftOffice Visio 2003软件画的, 目5、有一个stu info.txt文件, 是30位虚拟学生的信息, 可根据实际需要进行增册, 但据结构的教材已经很多了。白从美国唐.欧.克努特教授用汇编语言写的《计算机程序设计技巧》第一卷《基木算法》问世以来, 已经出现了用PASCAL、C、C++、JAVA等语言写的数据结构书,所以,在编者写本书之前,曾经感到很为难。门前,C#语言作为微软在新一代开发平台.NET推出的、完全面向对象的语言, 凭着其简洁、高效、模板、标准化的特性,使得C#语言像程序设计语言中的一件艺术品,也吸引着越来越多的开发人员。这也使得我院的可视化专业进行专业改革时,决定以C#语言作为该专业的主要开发语言。所以说,用C#语言来讲授《数据结构》课程是我院专业改革的结果。而用C#语言写的数据结构教材目前国内基本上是空白,鉴于此,编者决定写本书,的发展。当作者写这本书时, 是以C#语言和NET Framework的2.0版本来写的。但是, 到目前为止, C#语言和NET Framework已经出现3.0版本了.这使得编者感到了微软技术的发展之快,发出了“学习微软的东西在某种程度上是一种痛苦”之叹!也使编者曾产生了放弁写该书的念头。但作为教师的责任和对新东西的执著使得编者一直坚持,直到该书完。也附带说一句:如果读者在阅读过程中,发现有些技术不是最新的技术也不要惊奇,本书是以C#语言和, NET Framework 2.0版本来写的,识:第2章至第6章分别讨论了线性表、栈和队列、申和数组、树型结构和图结构等常用的数据结构及其应用, 以及在.NET框架中相应的数据结构:第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的算法。个新的开发半台, 开的是让“不同的语言共享同一平台”, NET很可能成为下一代Windows操作系统的一部分, 面C#语言作为新一代完全面向对象的语言, 是.NET的母言, 本书所有的数据结构和算法都是用C#语言进行描述, 并在相应章节的末尾介绍了在NET框架中常用的数据结构和算法.用C#在NET平台开发的技术人员可以从本书巾获得许多有益的知识和技术,
案例和chapter l-chapter 8等9个子日录.习《C#初级编程》课程所做的一个小系统,是学生在没有学过《数据结构》课程时算法,目的在于让学生比较采用数据结构和算法与不采用数据结构与算法的不同,所以,把这个小的系统作为《数据结构(C#)》课程的学习素材。考虑到有些学校在选用本教材时学生没有做过这个系统,所以,把代码全部给了出来。录是本书中的有关源代码,涉及各个数据结构的接、结点类、数据结构类的C#代码及常用算法都放在相应章节目录下的source子目录中。种数据结构和常用的排序和查找算法来解决《学生信息管理系统》的项目,是案例内容在数
据结构中的推广和延伸,所有的代码都没有完成,可作为教师教学、学生实验、课程设计等的素材使用。其中, chapter l中的project子目录是各个例题中问题应用的项目, chapter 4由丁string和array是经常使用的数据结构和数据类型, 所以, 没有project子目录而只有source子目录.chapter 6出于图的内容高职层次的学生很少涉及, 所以也没有project子目录而只有source子目录。的是为了让教师更好地各课与上课。主要是第5章以后章节的部分图,必须修改相应的程序代码,不足之处,思请广大读者批评指正。如果您对木书或光盘有什么意见、问题或想法,欢迎您通过下面的邮件通知编者,编者将不胜感激:数据结构(C#语音版)数据结构(C#语言版)使用本书及光盘的工具Mie rosoft VisualStudio 2005(如果您想运行本书中的程序, 那么您需要在计算机中安装它):
MicrosoftOffice PowerPoint 2003(如果您想使用ppt日录中的内容, 那么您需要在计算机中安装它);MicrosoftOffice Visio 2003(如果您想使用pictures目录中的内容, 那么您需要在没有许多人的帮助,编者是不可能完成本书的。尤其要感谢下面这些人。计算机中安装它):Adobe Acrobat 7.0 Professional(如果您想使用pdf目录中的内容, 那么您需要在计算机中安装它);张应辉院长和胡锦德院长一直关注和支持可视化专业的专业改革,特别是胡院长,亲白指导了专业改革,并多次询问该书的进度并对其中的问题给予指示,如果没有二位领导,该书是不可能产生和完成的。出版社的周凌波和郭朝晖老师为本书的修订和出版做了大量的工作。与他们的合作非常愉快,他们尽力使本书的东西通顺流畅。没有他们的工作,本书不可能出版。最后,编者要感谢自己的家人.为了写这本书,编者投入了大量的时间和精力,牺牲了许多的周末和节假。没有晋璐(编者的妻子)和段楚榆(编者的女儿)的支持,根本不可能有这本书的问世,多少次,编者都想花些时间陪伴家人,但都因为本书而放弃了。现在,本书总算告一段落,编者可以有更多时间幸福地听到女儿的笑声了。
第1章绪论数据结构(CW语言版)数据结构(C#语版)数据是外部世界信息的计算机化,是计算机加工处理的对象。运用计算机处理数据时,必须解决四个方面的问题:一是如何在计算机中方便、高效地表示和组织数据:二是如何在计算机存储器(内存和外存)中存储数据:三是如何对存储在计算机中的数据进行操作,可以有哪些操作,如何实现这些操作以及如何对同一问题的不同操作方法进行评价:四是必须理解每种数据结构的性能特征,以便选择一个适合于某个特定问题的数据结构。这些问题就是数据结构这门课程所要研究的主要问题。本章首先说明学习数据结构的必要性和本书的目的,然后解释数据结构及其有关概念,接着讨论算法的相关知识,最后简单介绍本书所要用到的相关数学知识和C#知识。1.1数据结构1.1.1学习数据结构的必要性我们知道,虽然每个人都懂得英语的语法与基本类型,但是对于同样的题目,每个人写出的作文,水平却高低不一,程序设计也和写英语作文一样,虽然程序员都懂得语言的语法与语义,但是对于同样的问题,程序员写出来的程序不一样。有的人写出来的程序效率很高,有的人却用复杂的方法来解决一个简单的问题。当然,程序设计水平的提高仅仅靠看几本程序设计书是不行的。只有多思索、多练习,才能提高自己的程序设计水平;否则,书看得再多,提高也不大。记得刚学程序设计时,常听人说程序设计水平要想提高,最重要的是多看别人写的程序,多去思考问题。从别人写的程序中,我们可以发现效率更高的解决方法:从思考问题的过程中,我们可以了解解决问题的方法常常不只一个,运用先前解决问题的经验,来解决更复杂更深入的问题,是提高程序设计水平的最有效途径。数据结构正是前人在思索问题的过程中所想出的解决方法。一般而言,在学习程序设计一段时间后,学习“数据结构”便能让你的程序设计水平上一个台阶.如果只学会了程序设计的语法和语义,那么你只能解决程序设计三分之一的问题,而且运用的方法并不是最有效的,但如果学会了数据结构的概念,就能在程序设计上,运用最有效的方法来解决绝大多数的问题。数据结构形成了程序员基本数据结构工具箱(toolkit) 。对于许多常见的问题, 工具箱里的数据结构是理想的选择。就像.NET Framework中Windows应用程序开发中的工具箱,程序员可以直接拿来或经过少许的修改就可以使用,非常方便,第二个是讲授常用的算法,这和数据结构一样,是人们在长期实践过程中的总结,程序员可以直接拿来或经过少许的修改就可以使用。可以通过算法训练来提高程序设计水平。第三个目的是通过程序设计的技能训练促进程序员综合能力的提高。
第1章
1.1
绪论.
数据结构.
1.1.1
1.1.2
1.2算法.
2.1.1线性表的定义.
2.1.2线性表的基本操作.
2.2顺序表.
2.2.1顺序表的定义.
2.3单链表.
3.1栈.
3.1.1栈的定义及基本运算.
3.1.2栈的存储和运算实现.
4.1串.
4.2数组.
本章小结.
习题四.
5.1树.
6.1图的基本概念.
学习数据结构的必要性.
基本概念和术语.
1.2.1算法的特性.
1.2.2算法的评价标准.
1.2.3算法的时间复杂度.
1.3数学预备知识.
1.3.1集合.
1.3.2常用的数学术语.
1.3.3对数.
1.3.4递归
1.4C#预备知识.
1.4.1接.
1.4.2泛型编程.
本章小结.
习题-.
第2章线性表.
2.1线性表的逻辑结构.
2.2顺序表的基本操作实现.
2.2.3顺序表应用举例.
2.3.1单链表的定义.
2.3.2单链表的基本操作实现.
2.3.3单链表应用举例.
2.4其他链表.
2.4.1双向链表.
2.5C#中的线性表.
本章小结.
习题二.
第3章栈和队列.
2.4.2循环链表.
3.1.3栈的应用举例.
3.1.4C#中的栈.
3.2队列.
3.2.1队列的定义及基本运算
3.2.2队列的存储和运算实现.
3.2.3队列的应用举例.
3.2.4C#中的队列.
本章小结.
习题三.
第4章串和数组.
第5章树和二叉树.
数据结构(CW语言版)
数据结构(C#语产版)
4.1.1串的基本概念.
4.1.2串的存储及类定义.
4.1.3串的基本操作的实现.
4.1.4C#中的串.
4.2.1数组的逻辑结构.
4.2.2数组的内存映象.
4.2.3C#中的数组.
5.1.1树的定义.
5.1.2树的相关术语.
5.1.3树的逻辑表示.
5.1.4树的基本操作.
5.2二叉树.
5.2.1二叉树的定义
5.2.2二叉树的性质.
5.3树与森林.
5.4哈夫曼树.
本章小结.
习题五.
第6章图.
5.2.3二叉树的存储结构.
5.2.4二叉链表存储结构的类实现.
5.2.5二叉树的遍历.
5.3.2树、森林与二叉树的转换.
5.3.3树和森林的遍历.
5.4.1哈夫曼树的基本概