《数据结构与算法C#语言描述》笔记目录

前言

书中,正则表达式、和散列表部分撰写内容不够丰富。通书更适合作为引入性的介绍、了解。

本书原版书名为:Data Structures and Algorithms Using C#。出版时间是2007年3月26日。当时.NetFramework的最新版本是3.0。因此有些数据结构类型是不包含之后.net framework版本新增的,比如集合数据类型。

原版pdf下载地址:

http://files.myopera.com/eketab02/blog/DATA.STRUCTURES.AND.ALGORITHMS.USING.Csharp.pdf?1348637854

本文,只是做一些记录、笔记,简洁明了的分类梳理。对各种数据结构类型的描述,并未记录在内,这些还是看书上的细细描述吧。暂十四章及其之后不列入笔记。

1. 链表部分可自行多做练习,尤其是循环链表。

2. 集合部分,由于是.net framework 3.5之前没有的,因此HashSet和SortedSet是参照MSDN增加的。

 

书中有诸多错误:p45,p54,p82,p106,p112,p120,p122,p131,p145,p171,p172。原版的一些错误在中文翻译版中已经纠正,但翻译版中仍然有些错误。有些可能是翻译原因,在文字的描述上可以不用太计较。

 

许多数据结构主要的设计目的,就是为了便于数据的有效存储、排序、查找等的处理工作。





前言

一.群集

数据结构按线性分类群集

群集(Collection)

1.线性群集

1.1 直接存取群集

1.11 数组(Array类)

1.12字符串(String)

1.13结构(Struct)

1.2顺序存取群集(线性表)

1.21 有序线性表

1.211 栈(Stack类)

1.212 队列(Queue类)

1.22 无序线性表(通用的索引群集)

1.221 散列表

1.2211 HashTable类

1.2212 Dictionary字典类

2.非线性群集

2.1层次群集

2.11 树

2.111 二叉树

2.1111二叉查找树

2.112 堆

2.2 组群集

2.21 集合

2.22 图

2.23 网络

泛型编程

泛型数据类型

泛型类

时间测试

Timing类

二.数组

Array类

一维数组

多维数组

参数数组

锯齿状数组

ArrayList类

三.基础排序算法

冒泡排序算法

选择排序算法

插入排序算法

四.基础查找算法

顺序查找(线性查找)

“80-20”规则

自组织数据加快顺序查找

1.位置在前20%外的目标元素和第一个元素进行位置交换

2.目标元素位置提前一个

二叉树查找

递归二叉树算法

迭代二叉树算法

Array类的内置二叉树查找方法

五.栈和队列

栈(Stack类)

构造器

方法

进栈(Push方法)

出栈(Pop方法)

取数(Peek方法)

CopyTo方法

ToArray方法

实例:表达式求值器

实例:十进制向多进制的转换

队列(Queue类)

构造器

方法

入队(Enqueue方法)

出队(Dequeue方法)

取数(Peek方法)

CopyTo方法

ToArray方法

实例:模拟人们排队

实例:排列数据

继承自Queue类的优先队列

六.BitArray类

埃拉托斯特尼筛法

处理二进制

1.      按位运算符

And(与)

Or(或)

Not(非)

Xor(异或)

2.      移位运算符

向左移位(<<)

向右移位(>>)

BitArray类

构造器

方法

Set方法

SetAll方法

Get方法

And方法

Or方法

Xor方法

Not方法

CopyTo方法

实例:埃拉托斯特尼筛法

七.字符串、String类和StringBuilder类

String类

常用的String类方法

Split方法

Join方法

Format方法

比较字符串的方法

Unicode值

Equals方法

CompareTo方法

Compare(静态)方法

StartsWith方法

EndsWith方法

处理字符串的方法

Insert方法

Remove方法

Replace方法

PadLeft方法

PadRight方法

Concat(静态)方法

ToLower方法

ToUpper方法

Trim、TrimEnd、TrimStart方法

StringBuilder类

构造器

获取、设置关于StringBuilder对象的信息

Length、Capacity、MaxCapacity属性

EnsureCapacity方法

Chars属性

修改StringBuilder对象

Append方法

AppendFormat方法

Insert方法

Remove方法

Replace方法

ToString方法

八.模式匹配和文本处理

正则表达式概述

概述:使用正则表达式

RegEx类的构造

Regex类的Match方法

Regex类的Matches方法

Match类的Success方法

Regex.IsMatch静态方法

Regex.Replace静态方法

常用符号一览表格

正则表达式语法

数量限定词

加号(+)

星号(*)

问号(?)

有限数量的匹配{n}

字符类

句点 (.)

包含字符组 ([])

脱字符号 (^)

单词字符 (\w)

非单词字符 (\W)

数字字符符 (\d)

非数字字符类 (\D)

空格字符 (\s)

非空格字符 (\S)

用断言修改正则表达式

字符串或行的开始处^

字符串或行的末尾处$

单词的开始或者结束处\b

分枝条件 |

使用分组构造

匿名组

命名组?< >  ?’ ’

非捕获分组?:

零宽度正向预搜索断言和零宽度负向预搜索断言

正向预查 (?=)

反向预查 (?<=)

负正向预查 (?!)

负反向预查 (?

注释 (?#)

贪婪与懒惰

*?

+?

??

{n,m}?

{n,}?

CapturesCollection类

正则表达式的选项

九.构建字典:DictionaryBase类和SortedList类

DictionaryBase类(基于键来存储键值对)

DictionaryBase类

Add方法

Item方法

Remove方法

Clear方法

CopyTo方法

DictionaryEntry类

泛型KeyValuePair类(基于键来存储键值)

SortedList类(按照键的顺序来存储键值对)

构造

Add方法

Remove方法

RemoveAt方法

Clear方法

IndexOfKey方法

IndexOfValue方法

ToArray方法

Keys属性

Values属性

十.散列和Hashtable类

散列概述

选择散列函数

查找散列表中数据

解决冲突

桶式散列法

插入一个数据项

移出一个数据项

开放定址法

线性探查

平方探查

双重散列法

Hashtable类

构造器

检索键和数值

检索基于键的数值

其他常用方法

十一.链表

数组存在的问题

链表的定义

面向对象链接的设计

双向链表

循环链表

LinkedList类和LinkedListNode类

LinkedList常用成员

LinkedListNode常用成员

十二.二叉树和二叉查找树

树的定义

二叉树

构造二叉查找树

遍历二叉查找树

遍历的概念

遍历方案

遍历算法

遍历序列

中序遍历

先序遍历

后序遍历

从二叉查找树中移除叶子节点

删除带有一个子节点的节点

删除带有两个子节点的节点

十三.集合

集合的定义

集合的操作

集合的属性(性质)

用散列表实现一个Set集合类

内部实现

使用实现

用BitArray实现一个Set集合类

策略

内部实现

使用实现

HashSet类和SortedSet

HashSet

构造器

主要属性和方法

实例

SortedSet

构造器

主要属性和方法

实例

十四.高级排序算法

十五.用于查找的高级数据结构和算法

十六.图类

十七.高级算法

 


你可能感兴趣的:(《数据结构与算法C#语言描述》)