第5章探讨了两种经典的数据结构:栈和队列这章的重点是这些数据结构在解决日常数据处理问题中的实际应用第6章介绍了bitarray类,这种类可用来有效地表示大量整型数值,比如测试成绩
前提条件
第16章讨论了图以及图的算法图在表示许多不同的数据类型时非常有用,特别是网络最后,第17章向读者介绍算法设计技巧的精髓:动态算法和贪心算法
第9章向读者介绍把字典作为数据结构来使用字典和基于字典的不同数据结构把数据作为键值对来存储这章向读者说明了如何创建基于dictionarybase这个抽象类的自定义类第10章介绍了散列表和hashtable类
在专业程序员的成长过程中,对于数据结构与算法的学习至关重要虽然有许许多多关于数据结构与算法的书籍,但是这些书籍通常都是大学教材,并且是使用在大学里讲授的java语言或c++语言编写的c#语言正在成为一种广受欢迎的编程语言,这本书旨在面向c#程序员介绍数据结构与算法的基础知识
章节组织
c#语言根植在一个功能非常丰富的.net框架开发环境中在.net框架类库中包含有一套数据结构类(也称为群集类),这套类的范围广泛,从array类、arraylist类和collection类到stack类和queue类,再到hashtable类和sortedlist类学习数据结构与算法的学生在学习如何实现它们之前可以先看看如何使用数据结构以前,老师在构建完整的栈数据结构之前只能抽象地讲解栈的概念,而现在老师可以通过向学生们展示如何用栈执行一些计算(如数制之间的转换),立即展示数据结构的实用工具有了这些知识后,学生可以在课后学习数据结构(或算法)的基本原理,甚至可以构造他们自己的实现
第1章向读者介绍数据结构作为数据群集的概念介绍了线性和非线性群集的概念示范说明了collection类这章还介绍了泛型编程的概念,它允许程序员编写一个类或一种方法,然后用于众多数据类型泛型编程是c#语言一种重要的新特性(在c#2.0及更高版本中可用)这种特性是如此重要以至于在system.collections.generic命名空间中存在一个专门的泛型数据结构库当数据结构具有在此库中能找到的泛型实现时,我们就会讨论它的用途这章结尾处介绍了衡量书中讨论的数据结构与算法性能的方法
在这里我要感谢帮助我完成本书的各界人士首先,我要感谢听我讲授数据结构与算法开发课程的学生们,他们是(排名不分先后):matthoffman、kenchen、 ken cates、jeffrichmond和gordoncaffey此外,要感谢我在pulaski技术学院(pulaski technicalcollege)的同事claytonruff,他多次旁听我的课程并且提出了极好的建议和批评我还要感谢院长daviddurr和系主任bernicatackett支持我的写作工作同样,我还要感谢我的家人在我全身心投入研究和写作时对我的宽容与支持最后,我要感谢剑桥大学出版社的laurencowles和heather bergman,感谢他们容忍我的许多问题、内容更改,以及习惯成自然地交稿延迟
本书主要提供了对数据结构与算法的实用概述,这是所有计算机程序员们需要知道和了解的基于这个原因,本书没有涵盖数据结构与算法的正规分析因此,本书没有一个数学公式,也一次都没有提及大o分析(如果你不知道大o分析的含义,查看参考文献中提到的任何一本书都可以)相反,本书把各种数据结构与算法作为求解问题的工具书中讨论的数据结构与算法都用简单的时间测试进行了性能比较
第3章介绍了基础排序算法,如冒泡排序和插入排序;而第4章则研究了用于内存查找的最基本的算法,即顺序查找和二叉查找
致谢
第2章回顾了构造数组的方法,并且用示例说明了array类的特性array类把许多与数组相关的函数(ubound函数、lbound函数等)封装到单独一个包中arraylist是数组的一种特殊类型,它支持动态调整大小
阅读本书的唯一前提条件就是需要读者对c#语言有大概的了解,尤其是要了解一些用c#进行面向对象编程的知识
前言
数据结构的书中通常不介绍字符串,但是本书第7章介绍了字符串、string类和stringbuilder类这是因为在c#语言中许多的数据处理是在字符串上执行的,读者应该了解基于这两种类的特殊方法第8章分析了用于文本处理和模式匹配的正则表达式的使用与较传统的字符串函数和方法相比,正则表达式常常会提供更强大且更有效的处理
第13章向读者说明在集合中存储数据的方法这种方法在数据结构只存储具有唯一性的数据值的情况下是很实用的第14章涵盖了更多高级排序算法,包括流行且高效的快速排序算法quicksort,此算法是大多数在.net框架库中实现的排序过程的基础第15章会看到3种数据结构:avl树、红黑树和跳跃表在无法使用二叉查找树的时候,这3种数据结构对查找是很有用的
链表作为另外一种经典的数据结构是在第11章介绍的c#语言中的链表并不像在c++这样的基于指针的语言中的链表那样重要,但是它仍然在c#编程中发挥着作用第12章为读者介绍了另一种经典数据结构-二叉树二叉查找树作为二叉树的特殊类型将是这章的主要内容,其他二叉树类型在第15章进行介绍
(:和讯网站)