- 浏览: 218359 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
/********************广度优先遍历算法*******************/ void BFSTraverse(Graph G, Status (*Visit)(int v)) { // 按广度优先非递归遍历图G。使用辅助队列Q和访问标志数组visited。 for (v=0; v<G.vexnum; ++v) visited[v] = FALSE; InitQueue(Q); // 置空的辅助队列Q for ( v=0; v<G.vexnum; ++v ) if (!visited[v]) { EnQueue(Q, v); //入队 visited[u] = TRUE; Visit(u); //访问 while (!QueueEmpty(Q)) { DeQueue(Q, u); //出队 for ( w=FirstAdjVex(G, u); w!=0; w=NextAdjVex(G, u, w) ) if ( ! visited[w]) { visited[u] = TRUE; Visit(u); //访问 EnQueue(Q, w); //入队 } } //while } //if } // BFSTraverse // FirstAdjVex(G, u)寻找u的第一个邻接点,并返回其下标位置 // NextAdjVex(G, u, w) w是u的一个邻接点,寻找u的所有邻接点中位于w后面的那一个,并返回其下标位置
评论
4 楼
sblig
2012-05-22
用Dijkstra算法求最短路径
#define MAX_VERTEX_NUM 20 void ShortestPath_DIJ(MGraph G,int v1) //V1是源点 { //用Dijkstra算法求有向网G的v10顶点到其余顶点的最短路径 int P[ MAX_VERTEX_NUM] , D[ MAX_VERTEX_NUM]; int final[ MAX_VERTEX_NUM]; int i,v,w,min,pre; for(v=1; v<=G.vexnum; ++v) { //D[ ],final[ ],P[ ]初始化 final[v]=FALSE; D[v]=G.arcs[v1][v].adj; if(D[v]<INFINITY) P[v]=1; else P[v]=0; } D[v1]=0; final[v1]=TRUE; //源点v0相关数组初始化 for( i=2; i<=G.vexnum; ++i) { min=INFINITY; //寻找final[]=0的D[ ]中最小值 for(w=1; w<=G.vexnum; ++w) //最小值->min,最小值的下标->v if(!final[w] &&D [w]<min) { v=w; min=D[w];} final[v]=TRUE; //入选 for(w=1; w<=G.vexnum; ++w) //根据入选的v顶点修改D[ ]及p[ ] if(!final[w] && (min+G.arcs[v][w].adj<D[w])) { D[w]=min+G.arcs[v][w].adj; P[w]=v; } } //逐渐更新D[ ] 及p[ ] for (w=1; w<=G.vexnum; ++w) //依次输出 { printf("%d",w); pre=P[w]; if ( pre==0) if(w==v1) printf(" source point \n"); else printf(" No Path \n"); else { while( pre!=v1 ) { printf("<--%d",pre); pre=P[pre];} printf("<--%d **** distance is:%d\n",v0,D[w]); } //else } //for 输出结束 } ShortestPath_DIJ void ShortestPath_FLOYD(MGraph G,PathMatrix &p[],DistancMatrix D[]) { for(v=0;v<G.vexnum;v++) for(w=0;w<G.vexnum;w++) { D[v][w] = G.arcs[v][w]; for(u=0;u<G.vexnum;u++) P[v][w][u]=FALSE; if(D[v][w] < INFINITY) { P[v][w][v] = TRUE; P[v][w][w] = TRUE; } } for(v=0;v<G.vexnum;v++) for(w=0;w<G.vexnum;w++) for(u=0;u<G.vexnum;u++) if(D[v][u] + D[u][w] < D[v][w]) { D[v][w] = D[v][u]+D[u][w]; for(i=0; i<G.vexnum; i++) P[v][w][i]= P[v][u][i] || P[u][w][i]; } }
3 楼
sblig
2012-05-22
0 1 2 3 4 5
0 * 6 1 5 * *
1 6 * 5 * 3 *
2 1 5 * 5 6 4
3 5 * 5 * * 2
4 * 3 6 * * 6
5 * * 4 2 6 *
U 1
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V1 V1 V1 V1 V1
耗费 0 6 1 5 * *
入选顶点 V3
U 13
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V1 V3 V3
耗费 0 5 0 5 6 4
入选顶点 V6
U 136
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V3 V3
耗费 0 5 0 2 6 0
入选顶点 V4
U 1364
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V3 V3
耗费 0 5 0 0 6 0
入选顶点 V2
U 13642
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V2 V3
耗费 0 0 0 0 3 0
入选顶点 V5
U 136425
到达顶点 V1 V2 V3 V4 V5 V6
完成 经由U中 V1 V3 V1 V6 V2 V3
耗费 0 0 0 0 0 0
入选顶点
0 * 6 1 5 * *
1 6 * 5 * 3 *
2 1 5 * 5 6 4
3 5 * 5 * * 2
4 * 3 6 * * 6
5 * * 4 2 6 *
U 1
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V1 V1 V1 V1 V1
耗费 0 6 1 5 * *
入选顶点 V3
U 13
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V1 V3 V3
耗费 0 5 0 5 6 4
入选顶点 V6
U 136
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V3 V3
耗费 0 5 0 2 6 0
入选顶点 V4
U 1364
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V3 V3
耗费 0 5 0 0 6 0
入选顶点 V2
U 13642
到达顶点 V1 V2 V3 V4 V5 V6
经由U中 V1 V3 V1 V6 V2 V3
耗费 0 0 0 0 3 0
入选顶点 V5
U 136425
到达顶点 V1 V2 V3 V4 V5 V6
完成 经由U中 V1 V3 V1 V6 V2 V3
耗费 0 0 0 0 0 0
入选顶点
2 楼
sblig
2012-05-22
/****************最小生成树Prim算法******************/ typedef struct { VertexType adjvex; VRType lowcost; } closedge[MAX_VERTEX_NUM]; void MiniSpanTree_PRIM (MGraph G, VerTexType u) { k = LocateVex ( G, u ); // 顶点u为构造生成树的起始点 for ( j=0; j<G.vexnum; ++j ) // 辅助数组初始化 if (j!=k) closedge[j] = { u, G.arcs[k][j].adj }; closedge[k].lowcost = 0; // 初始,U={u} for (i=1; i<G.vexnum; ++i) { //在其余顶点中选择 k = minimum(closedge); // 求出T的下一个结点(k) printf(closedge[k].adjvex, G.vexs[k]); // 输出生成树的边 closedge[k].lowcost = 0; // 第k顶点并入U集 for (j=0; j<G.vexnum; ++j) if (G.arcs[k][j].adj < closedge[j].lowcost) { closedge[j].adjvex=G.vexs[k]; closedge[j].lowcost=G.arcs[k][j].adj; }; } } // MiniSpanTree_PRIM
1 楼
sblig
2012-05-22
/********************深度优先遍历算法*******************/ //--- 下列算法使用两个的全局变量 --- Boolean visited[MAX]; // 访问标志数组 Status (* VisitFunc)(int v); // 函数变量 void DFSTraverse(Graph G, Status (*Visit)(int v)) { // 对图G作深度优先遍历。 VisitFunc = Visit; for (v=0; v<G.vexnum; ++v) visited[v] = FALSE; // 访问标志数组初始化 for (v=0; v<G.vexnum; ++v) if (!visited[v]) DFS(G, v); // 对尚未访问的顶点调用DFS } void DFS (Graph G, int v) { // 从顶点v出发递归地深度优先遍历图G。 visited[v] = TRUE; VisitFunc(v); //访问第v个顶点 for (w=FirstAdjVex(G, v); w!=0; w=NextAdjVex(G, v, w) ) if (!visited[w]) DFS(G, w); // 对v的尚未访问的邻接顶点w递归调用DFS } // FirstAdjVex(G, u)寻找u的第一个邻接点,并返回其下标位置 // NextAdjVex(G, u, w) w是u的一个邻接点,寻找u的所有邻接点中位于w后面的那一个,并返回其下标位置
发表评论
-
OpenGL 图形编程 学习笔记 三
2013-01-04 13:54 1819[2012-12-31 16:53] openGL笔记 ... -
OpenGL 图形编程 学习笔记 二
2013-01-04 13:48 1181[2012-12-31 16:38] OpenGL ... -
OpenGL 图形编程 学习笔记 一
2013-01-04 13:45 1095[2012-12-31 16:15] OpenGL学习笔 ... -
Boost 学习笔记 第一天
2012-12-07 10:50 9701. timer.hpp timer接口简单,轻 ... -
“工业级” 断言
2012-09-06 12:30 961class Assert { public: A ... -
算法学习 之链表
2012-05-22 13:52 974/**********开放定址哈希表的存储结构***** ... -
算法学习 之查询
2012-05-22 11:45 860/******************顺序查找***** ... -
算法学习 之排序
2012-05-07 11:42 901/***********直接插入排序********** ... -
日常开发有用标签 五
2012-04-11 10:42 879linux cmd Mr__zh ... -
日常开发有用标签 四
2012-04-11 10:38 752java I/O 深入分析 Java ... -
日常开发有用标签 三
2012-04-11 10:37 857java thread java并发编程- ... -
日常开发有用标签 二
2012-04-11 10:35 663java 100个Java经典例子(41- ... -
日常开发有用标签 一
2012-04-11 10:31 911工具 Linux 常用C函数(中文版) ... -
C++ Primer 笔记七
2012-03-27 16:15 867每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行 ... -
C++ Primer 笔记六
2012-03-07 14:38 800typedef 通常被用于以下三种目的: 1.为了隐藏特定类型 ... -
C++ Primer 笔记五 引用(const)1
2012-02-24 17:50 1219定义 const 对象常量在定义后就不能被修改,所以定义时必须 ... -
C++ Primer 笔记四
2012-02-22 15:38 10091.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外 ... -
C++ Primer 笔记三
2012-02-22 12:53 843初始化变量定义指定了变量的类型和标识符,也可以为对象提供初始值 ... -
C++ Primer 笔记二
2012-02-16 16:09 897/* * main.cpp * Created on ... -
C++ Primer 笔记一
2012-02-16 16:08 896/* * main.cpp * Created on ...
相关推荐
小小学习,C语言数据结构,中序遍历二叉树非递归算法
数据结构与算法图的遍历与连通性PPT学习教案.pptx
我们就是不断的掌握着最古老的排序:冒泡等,可是就是在实践的时候往往就是一点用武之地都是没有的,于是我们做的一个小小的东东,就是一个简易的遍历的算法的实现,我们就是在不断的学习的过程里面体味我们的乐趣的...
遍历算法是数据结构与算法的基础,掌握遍历对后续算法学习极为重要。 能学到什么: 通过学习可以全面掌握列表数据结构的特点,遍历算法的设计思想,循环与迭代器两种实现方式,时间复杂度分析,以及遍历在数据处理、查找...
P243~245C++常用遍历算法学习笔记.docx
VC 递归和非递归算法遍历磁盘文件 适合新手学习
此算法是本人平成学习所写,写了注释,希望能和大家一起交流
树的三种遍历的非递归算法,大家互相学习
一种大致基于模拟进化的学习方法,遍历所有可能性,选取最优
二叉树的非递归遍历,使用C++实现二叉树的非递归遍历,对正在学习算法的同学应该挺有帮助的
图Graph,_深度优先遍历(DFS),_广度优先遍历(BFS)【数据结构和算法入门9】
这是一个用C(C++)语言编写的图的遍历算法!适合做数据结构课程设计的同学们参考学习!
中序遍历非递归算法演示PPT学习教案.pptx
刚开始学习递归算法的时候很难想明⽩⾥⾯的过程,其实理解遍历⽅式的话不需要对整棵树进⾏模拟,对他的整体逻辑理解或者找⼀个 最简单的⼆叉树特例理解就好了,中间的过程就是因为很难⽤详细⽂字表征才⽤递归的。...
用C++实现二叉树的前序遍历、中序遍历、后续遍历、层次遍历。分别采用递归的方法和迭代的方法,对入门级数据结构和算法学习大有裨益。不同的方法相互比对,更容易加深理解。
用c++代码实现数据结构中,二叉树的前序遍历,中序遍历,后序遍历的算法 为大家提供学习与参考
根据有向图的广优先搜索遍历算法PPT学习教案.pptx
用非递归后序遍历二叉树的方式实现的表达式计算,进行了精细的表达式逻辑判断和处理,可进行加减乘除、括号、小数的计算。项目结构清晰,基本都有代码注释,可用于数据结构...同为学习人,能力有限,不足之处还请指出。
二叉树的4个非递归算法,中序先序后序和层次遍历,算法都有注释而且很详细,适合数据结构学习者使用
https://blog.csdn.net/Alvarez/article/details/115871769 的配套代码,C++实现李航统计学习方法 K近邻算法(遍历)