随笔分类 - C#与数据结构
摘要:C#中实现了哈希表数据结构的集合类有:
(1)System.Collections.Hashtable
(2)System.Collections.Generic.Dictionary
前者为一般类型的哈希表,后者是泛型版本的哈希表。Dictionary和Hashtable之间并非只是简单的泛型和非泛型的区别,两者使用了完全不同的哈希冲突解决办法。
本文使用Silverlight制作了Hashtable的动态演示程序
阅读全文
摘要:《数据结构(C#语言描述)》的目录,及配套视频中的一集
阅读全文
摘要:本文详细地介绍了红黑树的原理及代码实现,并使用Silverlight制作了红黑树的模拟动画,使大家更方便地理解红黑树。最后将它和AVL树进行了简单的对比及测试。
阅读全文
摘要:我们知道在二叉查找树中,如果插入元素的顺序接近有序,那么二叉查找树将退化为链表,从而导致二叉查找树的查找效率大为降低。如何使得二叉查找树无论在什么样情况下都能使它的形态最大限度地接近满二叉树以保证它的查找效率呢?
前苏联科学家G.M. Adelson-Velskii 和 E.M. Landis给出了答案。他们在1962年发表的一篇名为 《An algorithm for the organization of information》的文章中提出了一种自平衡二叉查找树(self-balancing binary search tree)。这种二叉查找树在插入和删除操作中,可以通过一系列的旋转操作来保持平衡,从而保证了二叉查找树的查找效率。最终这种二叉查找树以他们的名字命名为“AVL-Tree”,它也被称为平衡二叉树(Balanced Binary Tree)。这里所说的平衡使我们想到了中庸之道,但有句话说得好,“中不偏,庸不易”。学会这种平衡术是一个相当痛苦的过程。
阅读全文
摘要:之前在这篇《二叉树的遍历》文章中曾有网友留言说递归算法效率太低。
http://www.cnblogs.com/abatei/archive/2008/05/23/1205707.html
所以制作一个视频专门讲解二叉树遍历的非递归算法。这不是技术文章,但视频比文章容易让人理解得多。
视频一共介绍了五个算法:先序遍历非递归算法;中序遍历非递归算法;三种后序遍历非递归算法。
大小25M,时长67分钟
阅读全文
摘要:本文使用C#实现了图的存储结构,及图的深度优先遍历和广度优先遍历等操作
阅读全文
摘要:讲述C#与数据结构中的深度优先遍历和宽度优先遍历
方便的话,希望可以提出意见
阅读全文
摘要:由于有读者对《C#程序设计基础教程与实训》214页的那个例子无法理解,所以专门写一篇文章对位标志进行讲解,希望可以对初学者有一些帮助。要理解这篇文章,首先要知道什么是位运算,什么是二进制,这些是计算机一级的内容,我不打算在这里讲解。如果有不懂的请上网用Google了解或查找相关书籍了解,写这篇文章的目的在于让你知道为什么要使用位运算,使用它会带来什么好处。我们首先从一个问题着手:如果你正在编写一个...
阅读全文
摘要:2.2.3 ArrayList 如果要动态地改变数组所占用内存空间的大小,则需以数组为基础进一步抽象,以实现这个功能。以图2.2的学生宿舍为例,为了使A班的所学生住在连续的宿舍内,可以把A班的学生全部搬迁到连续的5间空宿舍内。其效果如图2.6所示: 现实中,为了让一个班新加入的10个学生能跟原来的学生住在一起而把班级整体搬迁,这样的做法显示不合适,因为搬迁的成本太高。但在计算机中,内存...
阅读全文
摘要:线性表 线性表是最简单也是最常用的一种数据结构。例如,英文字母表(A,B,…,Z)是一个线性表,表中的每一个英文字母是一个数据元素;又如成绩单是一个线性表,表中的每一行是一个数据元素,每个数据元素又是由学号、姓名、成绩等数据项组成。线性表是最简单的数据结构,而顺序表和链表作为线性表的两种重要存在形式,是堆栈、队列、串以及树和图等数据结构的实现基础,内容非常重要,一定要认真对待。 本章将介绍线性...
阅读全文