图的深度遍历-邻接链表表示
来源:互联网 发布:淘宝卖家发货幽默短信 编辑:程序博客网 时间:2024/06/06 18:19
#include<stdio.h>#include<malloc.h>#define N 1005typedef struct Link{int data;struct Link * next;struct Link * fir;}Link;Link Pic[N];int front=0;int rear=0;int Check[N];int Queue[N];void DFS(Link a[],int fir){//printf("%d ",a[fir].data);Check[a[fir].data]=1;Queue[rear++]=a[fir].data;Link * p=a[fir].next;while(p){if(!Check[p->data]){DFS(a,p->data);}p=p->next;}}void Init(int n){for(int i=0;i<n;i++){Pic[i].data=i;Pic[i].next=NULL;Pic[i].fir=&Pic[i];}}void CreatePic(Link a[],int n){int u,v;for(int i=0;i<n;i++){ scanf("%d %d",&u,&v); Link * p=(Link * )malloc(sizeof(Link)); p->data=v; p->next=NULL; Pic[u].fir->next=p; Pic[u].fir=p; Link * q=(Link * )malloc(sizeof(Link)); q->data=u; q->next=NULL; Pic[v].fir->next=q; Pic[v].fir=q;}}void RollBack(int n){front=0;rear=0;for(int i=0;i<n;i++){Check[i]=0;Queue[i]=-1;Pic[i].next=NULL;Pic[i].fir=&Pic[i];}}int main(){int n;int k,m,t;scanf("%d",&n);scanf("%d %d %d",&k,&m,&t);while(n--){Init(k);CreatePic(Pic,m);DFS(Pic,t);for(int i=0;i<rear;i++){i!=rear-1?printf("%d ",Queue[i]):printf("%d\n",Queue[i]);}RollBack(k);}return 0;}
阅读全文
0 0
- 图的深度遍历-邻接链表表示
- 图的邻接表表示及遍历
- 邻接矩阵,邻接表表示图,深度优先遍历
- 图的广度遍历-邻接链表表示
- 【数据结构】邻接表表示法的图的深度广度优先遍历递归和非递归遍历
- 图的邻接表表示、广度优先、深度优先搜索
- DFS--深度优先搜索--图的邻接表表示
- 图的邻接表表示及其深度优先搜索实现
- 邻接表表示的深度优先搜索
- 图的邻接表表示及其DFS遍历
- 图的邻接表表示及其BFS遍历
- 图的邻接表表示法及遍历
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- 图的邻接表表示
- Viewpager刷新数据问题
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B 幸运大奖
- 卡片切换
- 转自ACMore_Xiong,时刻提醒自己多想到模运算
- 怎样才能赚到钱系列(八):走出舒适区
- 图的深度遍历-邻接链表表示
- LeetCode20. Valid Parentheses
- 遗传算法博客版
- JAva中读取TXT文件的方法。
- Python 学习第一章 笔记
- Java中的Map容器---2----TreeMap
- vim编译器的简单配置
- LeetCode21. Merge Two Sorted Lists
- PAT 1004 成绩排名