2012年11月5日
摘要:
这节,我们说一说二叉树常见的应用的场景。呵呵。。。。。。。。。。。。。。定义一个哈夫曼树,首先,要高清楚什么是哈夫曼树。所谓哈夫曼树是又叫最优二叉树,指的是对于一组具有确定权值的叶子结点的具有最小带权路径长度的二叉树。介绍哈夫曼树的一些基本概念。(1)路径(Path):从树中的一个结点到另一个结点之间的分支构成这两个结点间的路径。 (2)路径长度(Path Length):路径上的分支数。 (3)树的路径长度(Path Length of Tree):从树的根结点到每个结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。 (4)结点的权(Weight of Node):在一
阅读全文
posted @ 2012-11-05 11:32
laozhu1124
阅读(3620)
推荐(4)
2012年11月4日
摘要:
这节重点讨论 树的结构的源代码实现。先做一铺垫,讨论一下二叉树的存储结构。二叉树的存储结构分为线性存储和链式存储等等。1、二叉树的顺序存储结构 对于一棵完全二叉树,由性质 5可计算得到任意结点 i 的双亲结点序号、左孩子结点序号和右孩子结点序号。所以,完全二叉树的结点可按从上到下和从左到右的顺序存储在一维数组中,其结点间的关系可由性质 5计算得到,这就是二叉树的顺序存储结构。下图所示的二叉树的顺序存储结构为:但是,对于一棵非完全二叉树,不能简单地按照从上到下和从左到右的顺序存放在一维数组中, 因为数组下标之间的关系不能反映二叉树中结点之间的逻辑关系。 所以, 应该对一棵非完全二叉树进行改造,
阅读全文
posted @ 2012-11-04 12:11
laozhu1124
阅读(3175)
推荐(5)
2012年11月3日
摘要:
前面介绍了线性结构,线性结构中的数据元素是一对一的关系。本章和下一章介绍两种非常重要的非线性结构:树形结构和图状结构。树形结构是一对多的非线性结构,非常类似于自然界中的树,数据元素之间既有分支关系,又有层次关系。树形结构在现实世界中广泛存在,如家族的家谱(图一)、一个单位的行政机构组织(图二)等都可以用树形结构来形象地表示。树形结构在计算机领域中也有着非常广泛的应用,如 Windows 操作系统中对磁盘文件的管理、编译程序中对源程序的语法结构的表示等都采用树形结构。在数据库系统中,树形结构也是数据的重要组织形式之一。树形结构多叉树和二叉树两种,多叉树的操作实现比较复杂,但多叉树可以转换为二叉树
阅读全文
posted @ 2012-11-03 11:39
laozhu1124
阅读(6230)
推荐(3)
2012年11月2日
摘要:
这节我们讨论两种用的蛮多的数据结构——串和数组首先,老样子,什么是串,这里串不是吃的牛肉串,羊肉串,而是字符串。在应用程序中使用最频繁的类型是字符串。字符串简称串,是一种特殊的线性表,其特殊性在于串中的数据元素是一个个的字符。字符串在计算机的许多方面应用很广。如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的信息如姓名、地址等及货物的名称、产地和规格等,都被作为字符串来处理。另外,字符串还具有自身的一些特性。因此,把字符串作为一种数据结构来研究。具体情况,如图所示,顾客信息处理的字符串。串有哪些基本的概念了,串(String)由 n(n≥0)字符组成的有限
阅读全文
posted @ 2012-11-02 19:49
laozhu1124
阅读(2918)
推荐(2)
2012年11月1日
摘要:
这节我们讨论了两种好玩的数据结构,栈和队列。老样子,什么是栈, 所谓的栈是栈(Stack)是操作限定在表的尾端进行的线性表。表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶(Top) ,另一端是固定的,叫栈底(Bottom) 。当栈中没有数据元素时叫空栈(Empty Stack)。这个类似于送饭的饭盒子,上层放的是红烧肉,中层放的水煮鱼,下层放的鸡腿。你要把这些菜取出来,这就引出来了栈的特点先进后出(First in last out)。 具体叙述,加下图。栈通常记为:S= (a1,a2,…,an),S是英文单词stack的第 1 个字母。a1为栈底元素,an为栈顶元素.
阅读全文
posted @ 2012-11-01 14:22
laozhu1124
阅读(3761)
推荐(7)
2012年10月31日
摘要:
上节说过这节会讲双向链表,环形链表和应用举例,我们开始吧!!!!首先,明白什么是双向链表。所谓双向链表是如果希望找直接前驱结点和直接后继结点的时间复杂度都是 O(1),那么,需要在结点中设两个引用域,一个保存直接前驱结点的地址,叫 prev,一个直接后继结点的地址,叫 next,这样的链表就是双向链表(Doubly Linked List)。双向链表的结点结构示意图如图所示。双向链表结点的定义与单链表的结点的定义很相似, ,只是双向链表多了一个字段 prev。其实,双向链表更像是一根链条一样,你连我,我连你,不清楚,请看图。双向链表结点类的实现如下所示//一个链条的类public class
阅读全文
posted @ 2012-10-31 12:56
laozhu1124
阅读(3160)
推荐(5)
2012年10月30日
摘要:
上文我们讨论了一种最简单的线性结构——顺序表,这节我们要讨论另一种线性结构——链表。什么是链表了,不要求逻辑上相邻的数据元素在物理存储位置上也相邻存储的线性结构称之为链表。举个现实中的例子吧,假如一个公司召开了视频会议的吧,能在北京总公司人看到上海分公司的人,他们就好比是逻辑上相邻的数据元素,而物理上不相连。这样就好比是个链表。链表分为①单链表,②单向循环链表,③双向链表,④双向循环链表。介绍各种各样链表之前,我们要明白这样一个概念。什么是结点。在存储数据元素时,除了存储数据元素本身的信息外,还要存储与它相邻的数据元素的存储地址信息。这两部分信息组成该数据元素的存储映像(Image),称为结点
阅读全文
posted @ 2012-10-30 21:20
laozhu1124
阅读(3794)
推荐(3)
2012年10月29日
摘要:
上文对数据结构与算法,有了一个简单的概述与介绍,这篇文章,我们介绍一中典型数据结构——线性结构。什么是线性结构,线性结构是最简单、最基本、最常用的数据结构。线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系。 这种一对一的关系指的是数据元素之间的位置关系,即: (1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素; (2)除最后一个位置的数据元素外,其它数据元素位置的后面都只有一个元素。也就是说,数据元素是一个接一个的排列。因此,可以把线性结构想象为一种数据元素序列的数据结构。线性结构(List)是由 n(n≥0)个相同类
阅读全文
posted @ 2012-10-29 21:26
laozhu1124
阅读(4799)
推荐(2)
摘要:
这里,我们 来说一说C#的数据结构了。①什么是数据结构。数据结构,字面意思就是研究数据的方法,就是研究数据如何在程序中组织的一种方法。数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。 程序界有一点很经典的话,程序设计=数据结构+算法。用源代码来体现,数据结构,就是编程。他有哪些具体的关系了,(1) 集合(Set):如图 1.1(a)所示,该结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其它关系。 集合与数学的集合类似,有无序性,唯一性,确定性。(2) 线性结构(Linear Structure):如图 1.1(b)所示,该结构中的数据元素存在着一对一的关系。我们.n
阅读全文
posted @ 2012-10-29 16:30
laozhu1124
阅读(9535)
推荐(11)
2012年10月28日
摘要:
先看看这个游戏的类结构的介绍类结构公共类层:子弹帮助类、BulletHepler,公共帮助类、CommonHelper,图片帮助类、ImageHelper,精灵工厂类、SpriteFactory。游戏元素层:公有元素有精灵类、Sprite,精灵实体类、ModelSprite,英雄实体类、HeroSprite,游戏结束类、GameOver;旗下又包括了Bullet层,Daoju层,Effect层,Enemy层。Bullet层有一个基类BulletSprite,子弹精灵类。其他是具体的实现类EnemyBulletSprite、敌人子弹类,HeroCircleBulletSprite、英雄圆形子弹类
阅读全文
posted @ 2012-10-28 18:26
laozhu1124
阅读(2381)
推荐(5)