临近期末考了,所以思路来不及整理了,但大家还是可以仿照我的上几篇文章,“先动笔,再代码”的思路还是不变的。

#include<stdio.h>
#include<stdlib.h>
#define MAX_VERTEX_NUM 120
#define FALSE 0
#define TRUE 1
#define YES 1
#define NO 0
int visited[MAX_VERTEX_NUM]={FALSE};
int flag=NO;typedef struct ArcNode{ //弧 int adjvex; //该弧所指向的顶点的位置 struct ArcNode *nextarc; //指向下一条弧的指针
}ArcNode;typedef struct VNode{ //顶点 int data; //顶点信息 ArcNode *firstarc; //指向第一条依附该顶点的弧的指针
}VNode;typedef struct ALGraph{ //图 VNode vertices[MAX_VERTEX_NUM]; //图的各个顶点 int vexnum,arcnum; //图的当前结点数和弧数
}ALGraph;void graph_initialize(ALGraph* graph){ //图的初始化 graph->vexnum=0;graph->arcnum=0;for(int i=0;i<MAX_VERTEX_NUM;i++){graph->vertices[i].data=0;graph->vertices[i].firstarc=NULL;}
}void arcnode_initialize(ArcNode* arcnode){ //弧结点的初始化 arcnode->adjvex=0;arcnode->nextarc=NULL;
}ArcNode* arcnode_create(){ //弧结点的创建 ArcNode *arcnode=(ArcNode*)malloc(sizeof(ArcNode));arcnode_initialize(arcnode);return arcnode;
}ALGraph* graph_create(){ //图的创建 ALGraph* graph=(ALGraph*)malloc(sizeof(ALGraph));graph_initialize(graph);int n,m; //n是顶点数,m是边数 scanf("%d %d",&n,&m);graph->vexnum=n;graph->arcnum=m; for(int i=0;i<graph->vexnum;i++){//读入顶点信息 int temp;scanf("%d",&temp);graph->vertices[i].data=temp;graph->vertices[i].firstarc=NULL;}for(int j=0;j<graph->arcnum;j++){ //读入弧信息 int a,b;scanf("%d %d",&a,&b);//下面找到弧要插入的位置 int i=0;while(i<graph->vexnum){if(graph->vertices[i].data==a) break;i++; }ArcNode *arcnode=arcnode_create();arcnode->adjvex=b;//下面用头插法插入一个结点 arcnode->nextarc=graph->vertices[i].firstarc;graph->vertices[i].firstarc=arcnode;}return graph;
}int Recursion(ALGraph* graph,int head,int tail){int i;for(i=0;i<graph->vexnum;i++){if(graph->vertices[i].data==head){visited[i]=TRUE;break;}}ArcNode *temp=graph->vertices[i].firstarc;while(temp!=NULL){if(temp->adjvex!=tail){Recursion(graph,temp->adjvex,tail);}else{flag=YES;break;}if(flag==YES) break;}
}int main(){ALGraph* graph=graph_create();int begin,end;scanf("%d %d",&begin,&end); //读入待搜索的弧信息 Recursion(graph,begin,end);if(flag==YES){printf("yes");}else{printf("no");}return 0;
}

西工大NOJ数据结构理论——019.基于图的深度优先搜索策略(耿7.10)相关推荐

  1. 西工大NOJ数据结构理论——001.顺序表的插入运算(耿2.4)

    #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct NODE {int n ...

  2. 西工大NOJ数据结构理论——013.以十字链表为存储结构实现矩阵相加(严5.27)

      我第一下拿到这个题目,第一反应就是先定义好数据结构,然后构建好十字链表基础操作的函数,也就是"创插遍历"这些操作.下面是我的定义和函数操作. typedef int ElemT ...

  3. 西工大NOJ数据结构理论——021.逆波兰表达式(严7.38)

    这道题我参考的是(80条消息) 『西工大-数据结构-NOJ』 021-逆波兰表达式(耿7.38) 『西北工业大学』__LanXiu的博客-CSDN博客 (准确来说是快期末考试了,所以各科老师都在疯 狂 ...

  4. 西工大NOJ数据结构理论——017.输出以二叉树表示的算术表达式(严6.51)

    (17条消息) 『西工大-数据结构-NOJ』 017-输出以二叉树表示的算术表达式(耿6.51) 『西北工业大学』__LanXiu的博客-CSDN博客 上面是我参考的一位学长的博客. 先序建立二叉树, ...

  5. 西工大NOJ数据结构理论——007.表达式括号与匹配(严3.19)

    害怕提交次数过多,然后不再跑代码,影响成绩,所以又重新创建了两个号来测这道题. 结果全都正确,但就是一直"WA",然后Debug了近5个小时才把"WA"改成&q ...

  6. 西工大NOJ数据结构理论——015.建立二叉树的二叉链表存储结构(严6.70)

    我相信,大家都已经了解了这道题的背景,以及明白了我们需要做的事情. 对于这道题的背景,相信大家都熟悉,所以就不说了. 关于我们需要做的事情,大家也已经有了自己的思路.所以,我只在下面简短的写一写我的思 ...

  7. 西工大NOJ数据结构理论——018.建立二叉树的二叉链表(严6.65)

    刚点开这道题以后,我的反应是: 1.打开老师发的PPT:DS-Chap6,然后翻到第70页: 2.跟着图解,自己照着画了三四遍(其实是抄了三四遍: 3.然后自己出了一个比较简单的题: 先序:ABDCE ...

  8. 西工大NOJ数据结构理论——010.k阶斐波那契数列(严3.32)

    k阶斐波那契序列定义:第k和k+1项为1,前k - 1项为0,从k项之后每一项都是前k项的和 k=2时,斐波那契序列为:0,1,1,2,3,5,8,13... k=3时,斐波那契序列为:0,0,1,1 ...

  9. 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)

    一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...

最新文章

  1. 怎么用计算机计算出选手最后得分,计算选手最后得分(限制分的值,且最后按n或N键结束,其他键继续)...
  2. 常见排序算法效率比较
  3. 使用windows调用Linux远程桌面
  4. dos命令配置jdk环境
  5. actions相互调用并且存在顺序
  6. wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧
  7. 函数传参之商品价格计算—JS学习笔记2015-6-6(第50天)
  8. 台式电脑怎么找不到计算机在哪,台式机没有蓝牙怎么办
  9. LeetCode 61. Rotate List
  10. android listview 列宽度,WPF中用ListView时使GridView中的每列宽度按比例变化并使内容自适应单元宽度...
  11. 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~
  12. mysql 测试数据生成器_ApexSQL Generate(SQL测试数据生成器)
  13. 关于锐捷校园网断网的解决办法
  14. android 摇一摇脚本,python for android : 手机摇一摇
  15. VR和AR的区别是什么?-粤嵌教育
  16. C#开发自动照片(图片)裁剪(缩放)工具
  17. Firefox 实用插件
  18. Use After Free
  19. 淘宝电商:淘宝卖家如何快速提升店铺自然搜索流量?
  20. shell小技巧(十一)打印下面这句话中字母数不大于6的单词

热门文章

  1. 写几句对公司的新年祝愿
  2. 学习日志:关于.py文件双击打开出现闪退的情况
  3. 用python做网站的步骤_Python Django搭建网站流程图解
  4. 编译型语言和解释型语言的效率问题
  5. 前端模板引擎template之如何实现if-else、遍历
  6. man strerror strerror_r strerror_l
  7. 工作了?人与人之间的艺术
  8. jsp常见面试题及其知识点、EL、JSTL技术
  9. SAP中如何合并会计凭证(Summarizing FI documents)
  10. 计算机视觉竞赛技巧总结(三):OCR篇