数据结构及算法
xiaoniba1024
这个作者很懒,什么都没留下…
展开
-
一个静态字典对象的使用
虽然看起来没有什么实用价值,但是如果在不知道字典对象的键值时,这个办法就会变得很有用!如果在树结构中,有时会用到递归,在每一层有个计算结果,我希望把这个结果保存起来,再遍历这一层时要用到这个结果时,这个静态的字典对象就可以帮上忙。 下面的代码是flex中实现 xmlns:s="library://ns.adobe.com/f原创 2011-06-28 19:39:00 · 1718 阅读 · 0 评论 -
图论(1) 图的基本数据结构和算法
图论(1) 图的基本数据结构和算法图里面的东西太多,先写一个概要。在后面的文章中将继续逐个探讨和实现。1,一些概念顶点边(无向图) 或 弧(有向图)完全图,子图,连通图路径,简单路径(顶点不重复)生成树(无向图),关键路径,拓扑排序2,存储结构非常重要!!!2种存储方式,邻接矩阵和邻接表目前我写的都是用邻接表写的,但后来发现大转载 2012-02-02 13:01:36 · 1031 阅读 · 0 评论 -
图论(2-1) 有向图的实现
图论(2-1) 有向图的实现在无向图的基础上,稍作修改就可以实现有向图:1)public void addEdge(int start,int end)在无向图中要调用2次private void addEdgeToVNodeList(VNodenode,Edge edge),将2个端点的边链表中都加上边,有向图中只需要在一个方向添加2)public void转载 2012-02-02 13:01:55 · 1696 阅读 · 0 评论 -
数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph { protected SeqList vertexlist; // 顺序表存储图的顶点集合 protected int[转载 2012-02-03 07:39:40 · 18487 阅读 · 5 评论 -
图论(2) 无向图的实现(邻接表) 图的遍历
图论(2) 无向图的实现(邻接表) 图的遍历用邻接表实现了一个无向图,在实现时,包含了添加和删除顶点,添加和删除边,size方法(顶点个数),isEmpty方法,广度和深度优先迭代器1,成员变量,构造方法,数组扩展private VNode[] VNodes; //将顶点放在数组中 private int nodeCount;转载 2012-02-02 13:01:17 · 1970 阅读 · 0 评论 -
点、线、面相关的算法(2)
可用射线法来判断一个点是否在多边形的内部: 射线法就是以这个要判断的点作一射线(为了方便,直接作一水平向右的射线),数一下线段与 多边形边的交点数,奇数时就是在多边形内,偶数时就是在多边形外。 /* 判断线段是否在简单多边形内(注意:如果多边形是凸多边形,下面的算法可以化简) 原理: 必要条件一:线段的两个端点都在多边形内; 必要条件二:线段和多边形的所有边都转载 2012-02-17 20:13:45 · 1048 阅读 · 0 评论 -
计算几何算法--点线面相关算法--目录
计算几何算法(含源代码)㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4原创 2012-02-17 20:18:10 · 2301 阅读 · 0 评论 -
判断点在多边形内,射线算法 分享
//COPY1. 已知点point(x,y)和多边形Polygon(x1,y1;x2,y2;….xn,yn;);2. 以point为起点,以无穷远为终点作平行于X轴的直线line(x,y; -∞,y);3. 循环取得(for(i=0;i多边形的每一条边side(xi,yi;xi+1,yi+1),且判断是否平行于X轴,如果平行continu转载 2012-02-17 12:38:51 · 3225 阅读 · 0 评论 -
计算几何算法概览——算法篇之位置关系
一。位置关系:4.折线段的拐向判断: 折线段的拐向判断方法可以直接由矢量叉积的性质推出。对于有公共端点的线段p0p1和p1p2,通过计算(p2 - p0) × (p1 - p0)的符号便可以确定折线段的拐向: 若(p2 - p0) × (p1 - p0) > 0,则p0p1在p1点拐向右侧后得到p1p2。 若(p2 - p0) × (p1 - p0) 若(p2 -转载 2012-02-17 20:26:50 · 1625 阅读 · 1 评论 -
KMP字符串模式匹配详解[转]
个人觉得这篇文章是网上的介绍有关KMP算法更让人容易理解的文章了,确实说得很“详细”,耐心地把它看完肯定会有所收获的~~,另外有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊:转载 2012-02-21 17:20:35 · 587 阅读 · 0 评论 -
向量积(叉积)及其计算
向量积 a x b = (^n) * |a| * |b| * sin, 其中^n是同时垂直于a/b且符合右手定则的单位向量。若已知向量a = (ax, ay, az), b = (bx, by, bz); 则 a x b = (ay * bz - by * az, az * bx - ax * bz, ax * by - ay * bx);可以把i, j, k和a,b的坐标分别循环写成转载 2012-01-13 12:20:48 · 10975 阅读 · 0 评论 -
判断两个平面向量夹角是顺时针还是逆时针
如果向量是二维的(e. g. a = (ax, by) , b = (bx, by) ),那么a x b = ax * by - ay * bx = |a| * |b| * sin可以用来判断两条线段之间的夹角是顺时针还是逆时针的。原创 2012-01-13 12:19:57 · 8229 阅读 · 4 评论 -
写读书笔记的偷懒方法
如果看纸质的书,为了便于理解,可能要在书上加些标记!但看电子书时,确不行!可以用CAJView的功能,把文字拷贝到word中。这样就可以做标记啦!可以方便的写读书笔记!转载 2011-11-30 13:10:04 · 648 阅读 · 0 评论 -
中缀表达式变成等价的后缀表达式的算法
理论: (这部分很重要,看明白了,可以写出实现算法)表达式的表示形式有中缀、前缀和后缀3中形式。中缀表达式按操作符的优先级进行计算(后面代码实现只包括+、-、*、/,小括号),即数学运算。 后缀表达式中只有操作数和操作符。操作符在两个操作数之后。它的计算规则非常简单,严格按照从左到右的次序依次执行每一个操作。每遇到一个操作符,就将前面的两个数执行相应的操作。由后原创 2011-06-28 19:45:00 · 3175 阅读 · 0 评论 -
后缀表达式的求值的算法
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE原创 2011-06-29 17:34:00 · 42855 阅读 · 3 评论 -
开源-绘制函数
http://www.codeproject.com/KB/recipes/Differentiation.aspx 一个开源的项目,项目名称为:Symbolic Differentiation功能: 1. 根据用户输入的函数,在界面上绘制相原创 2011-09-08 18:50:13 · 498 阅读 · 0 评论 -
对象之间的通信
C++ 发消息,内存文件映射,socket等方式对象有其特有的私有空间,又可以跟其它对象通信。Java程序就是建立一个个对象(类),然后由对象以及它们之间的通信来组织程序。下面考虑对象之间的通信问题。 1、单向通信 对象b调用对象a,但是对象a不调转载 2011-10-11 17:20:55 · 2261 阅读 · 0 评论 -
数据结构与算法书籍推荐
如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。Niklaus Wirth说:算法+数据结构=程序,不说废话了,下面列出一份数据结构算法书目,先从最著名的说起A原书名:The Ar转载 2011-10-16 20:37:47 · 1152 阅读 · 1 评论 -
学习计划C
语言。我可以告诉你C语言有两大主题你要好好学,一个是内存管理,一个是指针!这个世界上90%以上的C/C++出的严重性错误全是和这两个有关。不要看谭浩强的那本书,那本是本烂书。推荐这本书给你《C程序设计语言(第2版·新版)》算法和数据结构。我认为,用C语言实现算法和数据结构莫过转载 2011-10-16 20:45:14 · 419 阅读 · 0 评论 -
OO设计原则总结
什么是设计原则? 设计原则是基本的工具,应用这些规则可以使你的代码更加灵活、更容易维护,更容易扩展。基本原则 封装变化Encapsulate what varies. 面向接口编程而非实现 Code to an interface rather than to an implementation.优先使用组合而非继承 Favor Composition Over Inher转载 2011-11-02 08:05:24 · 338 阅读 · 0 评论 -
面象对象设计的原则
软件设计中存在的问题什么是好的设计面向对象的基本设计原则当存在的问题过于僵硬(Rigidity)很难加入新功能过于脆弱(Fragility)很难修改复用率低(Immobility)高层模块无法重用黏度过高(Viscosity)破坏原始设计框架什么是好的设计?一个好的系统设计应该有如下的性质:可扩展性、灵活性、可插入性。设计目标可扩展性(Extensibi转载 2011-11-02 08:10:25 · 510 阅读 · 0 评论 -
面象对象设计的基本原则
"开放-封闭"原则(OCP)Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。我的理解:如在工厂模式中,可以直接扩展产品类并投入使用,而不需要想简单工厂模式那样修改工厂类的判断逻辑;即增加新代码而不会引起原有代码的变动。满足OCP带来的好处:能保证模块的稳定性,又能对需求的变更提供灵活的应对方案。 里氏代换原则(LSP)转载 2011-11-02 08:09:43 · 364 阅读 · 0 评论 -
自定义事件、组件总结
在平常的应用中自定义事件和自定义组件是非常重要的,下面分别介绍它们的应用。自定义事件分为两种情况:1继续自Event事件2直接用Event事件的临时常量自定义组件也分为两种:1mxml形式2 as形式这两种形式都可以继续自现有有组件,也可以不继续原有组件,完全重新定义。这里先说自定义组件,在自定义组件的创建过程中,会涉及到自定义事件。所以,我们用两种不同的自定义事件原创 2011-11-07 12:22:06 · 649 阅读 · 0 评论 -
点、线、面相关的算法(1)
转载原文:http://xuejx.blog.sohu.com/62019268.html/* 需要包含的头文件 */ #i nclude /* 常用的常量定义 */ const double INF = 1E200 const double EP = 1E-10 const int MAXV = 300 const double PI = 3.转载 2012-02-17 20:16:29 · 759 阅读 · 0 评论