邻结矩阵的建立和 BFS,DFS;;

邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!
但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!
---------------------------------------------------------------------------------------------------------------------------------------
//邻接矩阵的建立和 其BFS, DFS, 遍历 #include <cstdio> #include <cstdlib> //#define _OJ_int visit[100]; int cnt = 0; typedef struct Graph1 {int nv;int ne;int a[100][100]; } Graph1, *Graph; //建立一个图含顶点, 边, 和邻接矩阵Graph creat_graph(void) {Graph g;int i, j;int v1, v2;g = (Graph) malloc (sizeof(Graph1));scanf("%d %d", &g->nv, &g->ne);for(i = 0;i < g->nv; i++) {for(j = 0;j < g->nv; j++) {g->a[i][j] = 0;}} //对邻结矩阵赋初始值for(i = 0;i < g->ne; i++) {scanf("%d %d", &v1, &v2);g->a[v1][v2] = 1;g->a[v2][v1] = 1;} //建立一个无向矩阵return g; }void DFS(Graph g, int i) {int j;// lif(cnt == g->nv - 1)// printf("%d\n", i);// else { //此地有一个小技巧就是判断什么时候结束?// printf("%d ", i); //用一个全局变量cnt 由于每一个点遍历一次// cnt++; cnt == g->nv - 1 时结束;用此处理最后一个不要空格和换行// }printf("%d ", i);visit[i] = 1;for(j = 0;j < g->nv; j++) {if(g->a[i][j] == 1 && visit[j] == 0)DFS(g, j);} }void DFS_travers(Graph g) {int i;for(i = 0;i < g->nv; i++)visit[i] = 0;for(i = 0;i < g->nv; i++) {if(visit[i] == 0)DFS(g, i);} }typedef struct Queue1 {int top;int base;int *elem; } Queue1, *Queue;Queue creat_Queue(void) {Queue q;q = (Queue) malloc (sizeof(Queue1));q->elem = (int*) malloc (100 * sizeof(int));q->base = q->top = 0;return q; }int isempty(Queue q) {if(q->base == q->top)return 1;elsereturn 0; }void Enqueue(Queue q, int data) {q->elem[q->top++] = data; }int Dequeue(Queue q) {return q->elem[q->base++]; }void BFS(Graph g, int v) {int i, j;Queue q;q = creat_Queue();printf("%d ", v);visit[v] = 1;Enqueue(q, v);while (isempty(q) != 1) {i = Dequeue(q);for(j = 0;j < g->nv; j++) {if(g->a[i][j] && visit[j] == 0 ) {printf("%d ", j); //把整排先全都遍历完,在遍历其它的visit[j] = 1; //每次先遍历在入队Enqueue(q, j);}}}}void BFS_travers(Graph g) {int i;for(i = 0;i < g->nv; i++)visit[i] = 0;for(i = 0;i < g->nv; i++) {if(visit[i] == 0)BFS(g, i);} }int main(int argc, char const *argv[]) { #ifndef _OJ_ //ONLINE_JUDGEfreopen("input.txt", "r", stdin); #endifGraph g;g = creat_graph();DFS_travers(g);printf("\n");BFS_travers(g);return 0; }

 

转载于:https://www.cnblogs.com/airfand/p/5020420.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab cuda的.cu文件应该放在那里_无人机基于Matlab/Simulink的模型开发(连载一)

“一切可以被控制的对象&#xff0c;都需要被数学量化”这是笔者从事多年研发工作得出的道理&#xff0c;无论是车辆控制&#xff0c;机器人控制&#xff0c;飞机控制&#xff0c;还是无人机控制&#xff0c;所有和机械运动相关的控制&#xff0c;如果不能被很好的数学量化&…

java ask to_Java native和ASCII 互转工具Native2AsciiUtils.java下载

/** Copyright 2012-2013 The Haohui Network Corporation*/package com.haohui.common.utils;/*** Java Native和Ascii转换代码** project common-utils* author cevencheng * create 2012-11-7 下午4:16:57*/public class Native2AsciiUtils {/*** prefix of ascii string of…

go java性能_服务端I/O性能大比拼:Node、PHP、Java和Go

理解应用程序的输入/输出(I/O)模型&#xff0c;意味着其在计划处理负载与残酷的实际使用场景之间的差异。若应用程序比较小&#xff0c;也没有服务于很高的负载&#xff0c;也许它影响甚微。但随着应用程序的负载逐渐上涨&#xff0c;采用错误的I/O模型有可能会让你到处踩坑&am…

python爬取数据步骤_Python爬虫爬取数据的步骤

爬虫&#xff1a; 网络爬虫是捜索引擎抓取系统&#xff08;Baidu、Google等&#xff09;的重要组成部分。主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的镜像备份。 步骤&#xff1a; 第一步&#xff1a;获取网页链接 1.观察需要爬取的多网页的变化规律…

Android开发日记(六)

textViewUserName.setCursorVisible(false);//隐藏光标 textViewUserName.setFocusable(false);//失去焦点 textViewUserName.setFocusableInTouchMode(false);//虚拟键盘隐藏 if(!userLocalName.equalsIgnoreCase("null")&&!userLocalEmail.equalsIgnoreCa…

python数据库安装_python数据库-MySQL安装问题总结(48)

一、ERROR 1698(28000):Access denied for user rootlocalhost错误 我的操作系统是ubuntu&#xff1a;我的MySQL版本是&#xff1a;安装完成后&#xff0c;登录mysql的时候就出现了如下错误&#xff1a;因为安装的过程中没让设置密码&#xff0c;可能密码为空&#xff0c;但无论…

java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

如何从Java项目中的相对路径读取文件&#xff1f; java.io.File找不到指定的路径我有一个包含2个包的项目&#xff1a;ListStopWords.txtListStopWords.txt在包(2)中我有一个文本文件ListStopWords.txt&#xff0c;在包(1)中我有一个类FileLoadder.这是代码FileLoader&#xff…

[转]什么是RSS

http://www.blogbus.com/bangzhuzhongxin-logs/5452786.html 如果您够仔细的话&#xff0c;一定会发现BlogBus的每一个Blog站上都会有一个 图标。这个图标表示Blogbus支持RSS功能&#xff08;目前是RSS 2.0&#xff09;&#xff0c;即所谓的新闻聚合功能。 点击 图标&#xf…

京东的商品搜索功能是如何实现的_如何精准查询京东商品销量?分享一个京东运营小妙招...

京东平台和其他平台商品信息展示不一样&#xff0c;在京东平台商品的销售额无论是累计的还是当月的数据都没有展示&#xff0c;即便是通过商家后台的京东商智也是只能看到销售额的指数&#xff0c;这就给京东商家做竞品分析时设置了障碍&#xff0c;无法获取到竞品的真实销售额…

java zip解压进度条_java读取文件显示进度条的实现方法

实现这个功能比较简单&#xff0c;用到的类有两个&#xff1a;progressmonitorinputstream(主要是整个类) 和 progressmonitor &#xff0c;它们在javax.swing中大体思路&#xff0c;你要首先知道整个文件的大小&#xff0c;和当前已经读取文件的大小&#xff0c;获得整个文件大…

ubuntu下软件中心闪退问题解决

前段时间不知道做了什么导致&#xff0c;ubuntu下的软件中心进不去。没事点开后就立马闪退出去。 然后重新安装软件中心解决了 重装命令&#xff1a; sudo apt-get install --reinstall software-center software-center-aptdaemon-plugins 当然也可以选择用其他包管理器&#…

python 可视化监控平台_python可视化篇之流式数据监控的实现

preface 流式数据的监控&#xff0c;以下主要是从算法的呈现出发&#xff0c;提供一种python的实现思路 其中&#xff1a; 1.python是2.X版本 2.提供两种实现思路&#xff0c;一是基于matplotlib的animation&#xff0c;一是基于matplotlib的ion 话不多说&#xff0c;先了解大概…

java 不执行构造函数_函数作为构造函数执行,但不作为函数执行

我在displayandmove.as文件中有以下代码&#xff1a;package {import flash.display.MovieClip;public class FigureConstruct extends MovieClip {public function displayandmove() {this.height stage.stageHeight/5;this.width stage.stageWidth/5;}}}我在displayandmove…

codeforce 606A - Magic Spheres

题意&#xff1a;a,b,c三种球&#xff0c;能把俩个一样的球变成另一颜色不一样的球。给你目标x,y,z&#xff0c;问能否经过变化至少达打目标。 1 #include<iostream>2 #include<stdio.h>3 #include<stdlib.h>4 #include<memory.h>5 #include<string…

cmd cd 无法切换目录_一分钟掌握cmd基础操作,告别鼠标

cmd基础操作cmdcmd是command的缩写&#xff0c;一直伴随着windows操作系统。有时称为&#xff1a;控制台窗口&#xff0c;cmd窗口&#xff0c;黑窗口&#xff0c;命令行窗口等。其实&#xff0c;在unix系统&#xff0c;Linux&#xff0c;MacOS等几乎所有的操作系统中&#xff0…

jsp java代码_jsp内的java代码不执行,急啊!!大家来看看!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我的jsp页面上的java代码和html代码是穿插的&#xff0c;用System.out.println去跟踪的时候&#xff0c;内的代码都不执行&#xff0c;html都是执行的&#xff01;怎么回事啊&#xff1f;没有报错&#xff0c;没有任何”错误“的迹…

css 背景图怎么设置自动填充满_CSS属性设置 -- 背景样式

Ⅰ background-color: -- 设置标签的背景颜色rgba(0,0,0,0.65); -- (红,緑,蓝三原色,透明度)只能给背景设置透明度opacity: 0.65; -- 改变整个标签的透明度<style>Ⅱ background-image: --设置标签的背景图片url("图片网址"); -- 如果图片的大小没有标签大&…

EJB通过ANT提高EJB应用程序的开发效率、无状态发展本地接口bean、开发状态bean...

该jboss集成到eclipse 关掉Jboss控制台新闻Ctrlc&#xff0c;在MyEclipse→Servers→Jboss可配置JBoss。通过ANT提高EJB应用的开发效率 在HelloWorld 增加ANT&#xff0c;右击项目新建xml&#xff1a;build.xml&#xff0c;右击打开方式选择Ant .. 相应用进行编译、打包、公布、…

mysql-8.0.12语法_mysql-8.0.12 (免安装版) 安装详解

mysql-8.0.12 (解压版) 安装详解 错误解决第一步&#xff1a;mysql-8.0.12 (解压版)下载地址&#xff1a;https://www.mysql.com/downloads/第二步&#xff1a;配置初始化my.ini在mysql的bin目录中创建my.ini&#xff0c;将以下内容复制其中[mysqld]#设置3306端口port3306#设置…

python扩展库不是用于科学计算的有_有哪些科学计算的开源库

2017-03-19 回答 比较火爆的android开源库有以下&#xff1a; 1、volley 主要有以下模块&#xff1a; (1) json&#xff0c;图像等的异步下载&#xff1b; (2) 网络请求的排序&#xff08;scheduling&#xff09; (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和…