- 浏览: 735927 次
- 性别:
- 来自: 嘉兴
文章分类
- 全部博客 (386)
- Struts1.1 (2)
- Database (18)
- Core Java (15)
- Log4j (4)
- SSH (0)
- Dao (1)
- Architecture Design (1)
- References (2)
- Eclipse&MyEclipse (10)
- Hibernate (7)
- Spring (8)
- JavaMail (1)
- Data Structure And Algorithm (48)
- Struts 2 (2)
- SSI (1)
- SSL (2)
- JSTL (1)
- EJB3 (2)
- NET (2)
- XML (2)
- Components (2)
- Ant (3)
- Multi Thread (1)
- Performance Monitoring (1)
- Web Server (17)
- Oracle (1)
- jQuery (8)
- Regular Expression (1)
- Weblogic (1)
- Exception (1)
- Security (2)
- File Manipulation (1)
- JavaScript (12)
- JVM (2)
- HTML&DIV&CSS (4)
- Android (10)
- Beyond GFW (0)
- Business (0)
- SVN (6)
- 虚拟主机 (1)
- Virtual Host (3)
- My mentality (5)
- OS (15)
- ISPMP (3)
- Magento (5)
- Jsoup&HttpClient (7)
- LINUX (9)
- Database Design (0)
- Power Designer (1)
- TaobaoOpenPlatform (2)
- C/C++ (3)
- Maven (11)
- Quartz (1)
- Load Balance (1)
- Zabbix (4)
- Product&Business (1)
- Pay Interface (1)
- Tomcat (2)
- Redis (1)
- 集群 (1)
- Session (1)
- 共享Session (1)
- Jedis (1)
- jenkins (1)
- 持续集成 (1)
- Web前端 (1)
最新评论
-
aqq331325797:
特意注册账号上来说一句。牛逼!
swagger2.2.2 与 spring cloud feign冲突 -
KitGavinx:
跨顶级域名怎么保持sessionid一致?
Tomcat7集群共享Session 基于redis进行统一管理 -
jaychang:
dujianqiao 写道HI ,能否给一个完整的demo 啊 ...
淘宝订单同步方案 - 丢单终结者 -
GGGGeek:
找了一会儿,感觉mybatis应该没有这种操作,直到发现博主的 ...
mybatis collection list string -
dujianqiao:
HI ,能否给一个完整的demo 啊 ?
淘宝订单同步方案 - 丢单终结者
#include<iostream> #define MAX_VERTEX_NUM 50 using namespace std; typedef char VerType; typedef struct ArcNode //定义弧结点所在位置, { int adj; int info; ArcNode *next; }ArcNode; typedef struct VerNode //定义顶点(顶点数据,顶点所指向第一条弧的指针) { VerType data; ArcNode *first; }VerNode; typedef struct AdjList //图的定义 { VerNode VerNodes[MAX_VERTEX_NUM]; //顶点集 int verNum,arcNum; //顶点数,弧数 }AdjList; typedef struct Queue //FIFO队列 { int Item[MAX_VERTEX_NUM]; int front,rear; }Queue; int visited[MAX_VERTEX_NUM]; //顶点访问标志数组 //定位某一结点的位置,找不到返回0 int LocateGraph(const AdjList *g,const char data) { for(int i=1;i<=g->verNum;i++) { if(g->VerNodes[i].data==data) return i; } return 0; } //初始化队列 void InitQueue(Queue *Q) { for(int i=1;i<=MAX_VERTEX_NUM;i++) { Q->Item[i]=0; } Q->front=Q->rear=1; } //创建图的邻接表 void CreateAdjList(AdjList *g) { int s,d,weigth; char sChar,dChar; ArcNode *q=NULL; cout<<"输入图的顶点数,弧数\n"; cin>>g->verNum>>g->arcNum; cout<<"输入每个顶点的信息\n"; //初始化顶点 for(int i=1;i<=g->verNum;i++) { cin>>g->VerNodes[i].data; g->VerNodes[i].first=NULL; } //初始化弧 for(i=1;i<=g->arcNum;i++) { cout<<"输入第"<<i<<"条弧的起始,目的,弧的权值"<<endl; cin>>sChar>>dChar>>weigth; s=LocateGraph(g,sChar); d=LocateGraph(g,dChar); //定位该顶点的位置 q=(ArcNode *)malloc(sizeof(ArcNode)); q->adj=d;q->info=weigth; q->next=g->VerNodes[s].first; g->VerNodes[s].first=q; } } //初始化访问标志数组,0为未访问过相应的顶点i void InitVisited(AdjList *g) { for(int i=1;i<=g->verNum;i++) { visited[i]=0; } } //访问顶点值 void visit(AdjList *g,int v) { cout<<g->VerNodes[v].data<<endl; } //广度遍历图从v顶点开始 void BFS(AdjList *g,int v) { ArcNode *q=NULL; Queue *Q=(Queue *)malloc(sizeof(Queue)); InitQueue(Q); Q->Item[Q->rear]=v;visit(g,v);visited[v]=1; Q->rear=(Q->rear+1)%MAX_VERTEX_NUM; while(Q->front!=Q->rear) //队列不为空 { v=Q->Item[Q->front]; //取队首元素 Q->front=(Q->front+1)%MAX_VERTEX_NUM; q=g->VerNodes[v].first; while(q!=NULL) //同一层上(广度搜索的层)还有其他元素,则访问顶点,入队 { if(!visited[q->adj]) { visit(g,q->adj); visited[q->adj]=1; Q->Item[Q->rear]=q->adj; Q->rear=(Q->rear+1)%MAX_VERTEX_NUM; q=q->next; } } } } //广度遍历图 int BFSTransfer(AdjList *g) { int count=0; InitVisited(g); for(int i=1;i<=g->verNum;i++) { if(!visited[i]) { BFS(g,i); count++; } } return count; } int main() { int count; AdjList *g=(AdjList*)malloc(sizeof(AdjList)); CreateAdjList(g); if((count=BFSTransfer(g))!=1) cout<<"为非连通图,连通分量为"<<count<<endl; else cout<<"为连通通"<<endl; return 0; }
评论
2 楼
jaychang
2010-07-29
guooscar 写道
这位大哥很happy么~发的一个接一个的
呵呵,以前是放在另一个博客里的,全部粘贴过来了
1 楼
guooscar
2010-07-29
这位大哥很happy么~发的一个接一个的
发表评论
-
【排序算法系列】希尔排序
2015-12-05 16:14 842希尔排序的概述: a[0]...a[n-1 ... -
归并排序
2015-06-20 15:28 898public class MergeSort { pub ... -
插入排序
2015-06-20 15:27 485/** * 插入排序1 容易理解 * * ... -
有序线性链表归并
2013-10-05 11:30 1564#include<stdio.h> #incl ... -
Trie树 应用 Phone List
2012-06-15 11:21 1180Phone List 时间限 ... -
Trie树 单词查找树 键树(JAVA版附分析说明)
2012-06-13 10:27 5181来源于英文“retrieval”. ... -
Trie树 单词查找树 键树
2012-06-12 08:59 1157转自:http://zh.wik ... -
数字金额转中文大写金额
2010-11-26 15:09 1429/** * 用来将数字金额转化成中文大写的金额 ... -
汉诺塔递归算法
2010-11-25 08:17 1355import java.util.Scanner; /* ... -
约瑟夫出圈
2010-11-24 20:45 1101#include<iostream> #incl ... -
SmartHashSet只是为了解释HashSet的原理
2010-07-26 11:11 1362写该类的目的只是为了 ... -
二叉树中序遍历非递归算法
2010-06-29 23:17 1724#include<iostream> usi ... -
二叉树的创建
2010-06-29 23:15 1135#include<iostream> usi ... -
哈弗曼树建立与哈弗曼编码
2010-06-29 23:12 1250#include<iostream> #de ... -
二叉排序树转双向链表(要求无任何新增节点)
2010-06-29 23:07 2494题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双 ... -
线索二叉树中插入结点
2010-06-29 23:05 1893#include<iostream> usi ... -
二叉排序树的递归与非递归查找
2010-06-29 22:58 2310#include<iostream> usi ... -
二叉树中序线索化及查找某一结点的前驱,后继结点
2010-06-29 22:54 2686#include<iostream> usi ... -
十字链表定义创建查找
2010-06-29 22:44 1323#include<iostream> #defi ... -
稀疏矩阵转置
2010-06-29 22:39 1667#include<iostream> #defi ...
相关推荐
### 数据结构中的无向图与连通分量 #### 一、无向图与连通性的定义 在数据结构中,无向图是一种常见的图结构,其中边没有方向性,即边是双向的。无向图可以用来表示很多实际问题中的关系网络,如社交网络、计算机...
无向图连通分支在计算机科学中是一个重要的概念,特别是在图论和算法设计领域。它涉及到如何识别并分割一个无向图中的各个连通部分,这些部分是图中任意两个节点都存在路径相连的子图。在给定的标题“无向图连通分支...
要求采用邻接矩阵作为无向图的存储结构,邻接表作为有向图的存储结构,完成无向图和有向图的建立,并对建立好的图进行深度和广度优先遍历。具体实现要求: 1. 通过键盘输入图的顶点和边信息,分别构造一个无向图的...
本实验的主题是“C++数据结构_图连通分量”,这涉及到图论和算法设计。在这个实验中,我们将关注如何使用邻接表来存储无向图,并实现求解连通分量个数的算法。 首先,我们来理解什么是图。在计算机科学中,图是一种...
无向图中连通分量的数目”是关于寻找无向图中的连通分量数量的问题。连通分量是指图中任意两个节点之间都存在路径的子图,且这个子图是最大化的,即不能再添加其他节点而不破坏其连通性。 给定问题的输入包括两个...
在本例中,我们需要设计一个算法来判断一个图有无回路,并计算无向图中的连通分量个数。 7. 数据结构的应用:在程序设计中,我们需要使用适当的数据结构来存储图中的数据。在本例中,我们使用了邻接表来存储图中的...
给定编号从 0 到 n-1 的 n 个节点和一个无向边列表(每条边都是一对节点),请编写一个函数来计算无向图中连通分量的数目。示例 1:输出: 2示例 2:输出
对于无向图,可以构建一个二进制邻接矩阵,然后计算其指数。如果在计算过程中发现有非零的对角线元素,这意味着存在一个连通分支,且该顶点不在其他分支中。通过这种方法,我们可以逐步识别出所有的连通分支。 在...
上述代码展示了一个用于计算无向图双连通分量的算法。这个算法基于深度优先搜索(DFS)进行,由`Graph, Te>::BCC`函数实现。在这个函数中,`v`是当前正在访问的顶点,`clock`是一个计时器,用于为每个顶点分配发现...
而桥(Bridge)则是指在有向图或无向图中,删除某条边后会导致原本连通的图变成不连通的边,它是图中不可或缺的连接元素。 对于求解割点和桥的问题,可以使用深度优先搜索(DFS)或者Tarjan算法。Tarjan算法是一种...
在图论中,如果在无向图中,任意两个顶点之间都存在路径,那么这个图被称为连通图。如果图不是连通的,即存在至少两个顶点之间没有路径,那么这个图就被称为非连通图。连通图可以进一步分为若干个互不相交的连通子图...
最大连通分量抽取问题(MCP)是一种组合优化问题,它在无向图中寻找最大的连通子图。具体来说,如果在一个无向图G中,任意两个顶点都存在一条路径,则称该图为连通图。若存在顶点集V的子集,使得由此子集构成的子图...
计算无向图的连通分量个数,可以使用DFS或BFS遍历整个图。算法思路是从一个顶点开始,使用DFS或BFS访问所有可达的顶点,标记已访问的顶点,然后从下一个未访问的顶点继续此过程,每完成一次遍历,计数器加一,直到...
任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。 在Java中,实现深度优先遍历与连通分量的代码示例可以如下所示: 首先,定义一个Components类,用于计算无权图的连通分量: ```java ...
6. **计算连通分量**:通过检查矩阵非零元素,可以确定图的连通性,找出所有连通的子图。 7. **空间效率**:无向图的邻接矩阵表示法在空间上可能不那么高效,特别是对于稀疏图(边的数量远小于节点数量的平方)。 ...
对于无向图,邻接矩阵是对称的,其中的元素a[i][j]等于1,如果顶点i和j之间有边,否则等于0。对于有向图,邻接矩阵可能不对称,因为边的方向可能不同。通过分析邻接矩阵,我们可以快速检查两个顶点之间是否存在边,...
强连通分量是无向图中的最大强连通子图,即图中最大的子集,其中的每个节点都可以通过有向边到达其他任何节点,同时也能被其他节点通过有向边到达。在给出的例子中,1,2,4,5,6,7,8 构成了一个强连通分量,而3,9各自...
本文旨在对基于云计算的图算法进行研究,设计并实现了三个基本的图算法,这三个算法分别为无向图的连通分量算法,有向图的强连通分量算法以及无向图的Betweenness算法。首先,根据每个算法的特点设计了适当的数据...
【无向图的各项功能的课程设计】涉及到许多与图论和数据结构相关的知识点,以下是根据提供的标题、描述和部分内容详细解释这些知识点: 1. **插入顶点和边**:在图中添加新的顶点和边是基本操作。插入顶点通常意味...