深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc
C語言實現的圖的深度搜索與廣度搜索程序
C語言實現的圖的深度搜索與廣度搜索程序
/*
上機試驗5-圖的建立和遍歷
1)建立【無向】【非連通】圖的鄰接表存儲結構,要求頂點個數不少于15個。
2)用DFS及BFS對此鄰接表進行遍歷,打印出兩種遍歷的頂點訪問順序。
3)給定圖中任意兩個頂點v1和v2及整數k,判斷是否存在從v1到v2的路徑長度為k的簡單路徑,若有打印出路徑上的頂點序列(要求路徑上不含回路)。
進一步:找出從v1到v2的所有路徑長度為k的【簡單】路徑。(簡單路徑是指:頂點序列中不含【重現】的頂點的路徑。)
*/
#include
#include
#include
#define PointNum 15
using namespace std;
struct V{
int vertex;
int distance;
int sign;
struct V* next;
}Vertex[PointNum+1];
int P[PointNum];
int union_find(int x) // 并查集
{
while(P[x]!=x)x=P[x];
return x;
}
void DFS(int vertex_);
void BFS(int vertex_);
int DFS(int V1, int V2, int V3, int kn);
int lujing[PointNum+1],lujing_I;
int main()
{
int times,vertexNumbers,edgeNumbers,i,j,V1,V2,Distance,n=1,v1,v2,kn;
struct V *p,*q,*temp;
printf("請輸入您所要進行的測試次數:");
scanf("%d",×);
while(times--)
{
printf("\n第%d組數據輸入.\n",n++);
printf("請輸入頂點數:");
scanf("%d",&vertexNumbers); //要保證vertexNumbers <= PointNum
for( i = 0 ; i < vertexNumbers ; i ++ )
{
Vertex[i].vertex = i;//
Vertex[i].distance = 0;
Vertex[i].sign = 0;
Vertex[i].next = NULL;
}
printf("請輸入邊數:");
scanf("%d",&edgeNumbers); //要保證vertexNumbers <= PointNum
for( i = 0 ; i < edgeNumbers ; i ++ )
{
printf("請輸入數據:");
scanf("%d%d%d",&V1,&V2,&Distance);
p = &Vertex[V1];q = Vertex[V1].next;
while( q != NULL ){
p = q;
q = q->next;
}//出來的時候q指向Vertex[V1]鄰接表的結尾-NULL,
temp = (struct V *)malloc(sizeof(Vertex[0]));
p->next = temp; temp->next = NULL;//接上temp
temp->vertex = V2; temp->distance = Distance;temp->sign = 0; //給temp賦值
p = &Vertex[V2];q = Vertex[V2].next;
while( q != NULL ){
p = q;
q = q->next;
}
temp = (struct V *)malloc(sizeof(Vertex[0]));///temp的問題???????
p->next = temp; temp->next = NULL;//接上temp
temp->ve
總結
以上是生活随笔為你收集整理的深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 中实现大转盘抽奖
- 下一篇: 阿里IM技术分享(五):闲鱼亿级IM消息