dfs与bfs
来源:互联网 发布:设计画册的软件 编辑:程序博客网 时间:2024/06/06 19:25
#include <stdio.h>#include <stdlib.h>typedef struct Gnode *PtrToNode;typedef PtrToNode LGraph;struct Gnode{ int Data; PtrToNode Next;}ListGraph[12];LGraph queue[100];int rear=-1;int front=-1;int size=100;int flag=0;void InsertEdge();void InitializeGraph();void ADFS();void ABFS();void DFS(LGraph node);void BFS(LGraph node);LGraph DeQueue();void EnQueue(LGraph node);int N,E;int VertexMonitor[12];int false=0;int true =1;int main(){ int i; scanf("%d %d",&N,&E); InitializeGraph(); for(i=0;i<E;i++){ InsertEdge(); } LGraph G=&ListGraph[1]; for(i=0;i<N;i++){ VertexMonitor[i]=false; } ADFS(); for(i=0;i<N;i++){ VertexMonitor[i]=false; } ABFS();}void ADFS(){ int V1; for(V1=0;V1<N;V1++){ if(!VertexMonitor[V1]){ if(flag)printf("\n"); flag=1; printf("{ "); DFS(&ListGraph[V1]); printf("}"); } }}void DFS(LGraph G){ while(G){ if(!VertexMonitor[G->Data]){ printf("%d ",G->Data); VertexMonitor[G->Data]=true; if(G->Next)if(!VertexMonitor[G->Next->Data])DFS(&ListGraph[G->Next->Data]); } G=G->Next; }}void ABFS(){ int V1; for(V1=0;V1<N;V1++){ if(!VertexMonitor[V1]){ printf("\n"); printf("{ "); BFS(&ListGraph[V1]); printf("}"); } }}void BFS(LGraph node){ EnQueue(node); VertexMonitor[node->Data]=true; LGraph G; while(G=DeQueue()){ printf("%d ",G->Data); while(G->Next){ if(!VertexMonitor[G->Next->Data])VertexMonitor[G->Next->Data]=true,EnQueue(&ListGraph[G->Next->Data]); G=G->Next; } }}void EnQueue(LGraph node){ rear = 1+rear%size; queue[rear]=node;}LGraph DeQueue(){ if(front==rear)return NULL; front = 1+front%size; LGraph G = queue[front]; return G;}void InitializeGraph(){ int i; for(i=0;i<12;i++) { ListGraph[i].Data=i; ListGraph[i].Next=NULL; }}void InsertEdge(){ int V1,V2; scanf("%d %d",&V1,&V2); LGraph G=&ListGraph[V1]; LGraph G1; while(G->Next){ if(G->Next->Data>V2)break; G=G->Next; } G1=G->Next; G->Next=malloc(sizeof(struct Gnode)); G->Next->Next=G1; G->Next->Data=V2; G=&ListGraph[V2]; while(G->Next){ if(G->Next->Data>V1)break; G=G->Next; } G1=G->Next; G->Next=malloc(sizeof(struct Gnode)); G->Next->Next=G1; G->Next->Data=V1;}
阅读全文
0 0
- BFS 与 DFS
- bfs与dfs
- DFS与BFS
- DFS与BFS
- dfs与bfs实现
- bfs与dfs
- 【图】BFS与DFS
- BFS与DFS总结
- bfs与dfs
- DFS与BFS
- dfs与bfs
- dfs与bfs
- BFS与DFS
- DFS 与 BFS
- DFS与BFS
- BFS与DFS
- BFS与DFS
- DFS与BFS遍历
- LeetCode.463 Island Perimeter
- Linux重要命令的使用
- 使用python实现深度神经网络
- MySQL日志记录(2)SQL执行记录
- Merge Two Sorted Lists
- dfs与bfs
- PAT
- Maven安装核心程序
- 1114. Family Property (25)
- qsort快速排序用法--完整版(解释了cmp)【转】
- react学习之路(2.2)-----数据传递(props(子传父级),context)
- MySQL日志记录(3)在MySQL表中显示日志
- Java性能优化
- cocos2d的工程创建