C++ 数据结构——无向图遍历(邻接矩阵)

news/2024/7/15 17:16:11 标签: 图论, 有向图
/*
 无向图(邻接矩阵)
 */
#include <iostream>
using namespace std;
const int maxsize=10;
int visited[maxsize]={0};
template<typename T>
class MGraph
{
private:
    T vertex[maxsize];
    int edge[maxsize][maxsize];
    int vertexNum,edgeNum;
public:
    MGraph(T a[],int n,int e);
    void DFtraverse(int v);
    void BFtraverse(int v);
};
template<typename T>
MGraph<T>::MGraph(T a[],int n,int e)
{
    int i,j,k;
    vertexNum=n;
    edgeNum=e;
    for(i=0;i<vertexNum;i++)
    {
        vertex[i]=a[i];
    }
    for(i=0;i<vertexNum;i++)
    {
        for(j=0;j<vertexNum;j++)
        {
            edge[i][j]=0;
        }
    }
    for(k=0;k<edgeNum;k++)
    {
        cin>>i>>j;
        edge[i][j]=1;
        edge[j][i]=1;
    }
}
template<typename T>
void MGraph<T>::DFtraverse(int v)
{
    cout<<vertex[v];
    visited[v]=1;
    for(int j=0;j<vertexNum;j++)
    {
        if(edge[v][j]==1&&visited[j]==0)
            DFtraverse(j);
    }
}
template<typename T>
void MGraph<T>::BFtraverse(int v)
{
    int w,j,Q[maxsize];
    int front=-1,rear=-1;
    cout<<vertex[v];
    visited[v]=1;
    Q[++rear]=v;
    while (rear!=front)
    {
        w=Q[++front];
        for(j=0;j<vertexNum;j++)
        {
            if(edge[w][j]==1&&visited[j]==0)
            {
                Q[++rear]=j;
                cout<<vertex[j];
                visited[j]=1;
            }
        }
    }
}
int main()
{
    char ch[]={'1','2','3','4','5','6'};
    MGraph<char> MG(ch,6,6);
    cout<<"深度优先遍历:"<<endl;
    for(int i=0;i<maxsize;i++)
    {
        visited[i]=0;
    }
    MG.DFtraverse(0);
    cout<<"广度优先遍历:"<<endl;
    for(int i=0;i<maxsize;i++)
    {
        visited[i]=0;
    }
    MG.BFtraverse(0);
}


http://www.niftyadmin.cn/n/1096087.html

相关文章

vsprintf

/* 函数名: vsprintf功 能: 送格式化输出到串中返回值: 正常情况下返回生成字串的长度(除去\0),错误情况返回负值用 法: int vsprintf(char *string, char *format, va_list param);// 将param 按格式format写入字符串string中注: 该函数会出现内存溢出情况,建议使用vsnprintf…

安装、进程-云计算学习笔记---hadoop的简介,以及安装,用命令实现对hdfs系统进行文件的上传下载-by小雨...

本文是一篇关于安装、进程-的帖子 1、Hadoop简介 1、hadoop的生诞 l Nutch和Lucene之父Doug Cutting在2006年成完Hadoop目项。 l Hadoop并非一个单词&#xff0c;它来源于DougCutting小儿子对所玩的小象具玩牙牙学语的称谓。就像是google也是由小孩子名命一样。 l 后又经过5…

textarea自动适应高度 无滚动条

引用连接&#xff1a;http://www.oschina.net/code/snippet_164862_12687 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns"http://www.w3.org/1999/xhtml&quo…

ELF文件结构

Linux可执行文件为ELF格式&#xff0c;ELF格式文件主要分为以下几类&#xff1a; 1&#xff0e; 可重定位文件&#xff08;Relocatable File&#xff09;&#xff0c;这类文件包含了代码和数据&#xff0c;可以被用来链接成可执行文件或共享目标文件&#xff0c;静态链接库也可…

VC++开发人脸识别

FaceSDK可以帮助Visual C, C#, VB, Jav以及Borland Delphi开发者构建基于Web, Windows, Linux和Macintosh的具有人脸识别功能的应用程序。头文件如下&#xff0c;可以轻易构建一个人脸识别的应用程序。#ifndef _LUXANDFACESDK_ #define _LUXANDFACESDK_#if defined( _WIN32 ) |…

Unsupported major.minor version 51.0

解决Unsupported major.minor version 51.0错误 最近新安装使用了jdk7&#xff0c;编译了一些类替换到原来正常运行的项目中&#xff0c;替换之后发生了Unsupported major.minor version 51.0错误。经过网上搜索发现了问题产生的原因&#xff1a;用jdk7编译的class文件放到基于…

IntelliJ IDEA 12集成Tomcat 运行Web项目

1. 配置你系统上的Tomcat到IDEA上 File-Settings-Application Servers-Add&#xff0c;设置你的Tomcat根目录。 2.为项目创建webapp Faclet File-Project Structure-Modules&#xff0c;选中wx并点击上面的图标&#xff0c;在下拉菜单中选择Web创建一个Facelet&#xff0c;在右…

Apache优化:修改最大并发连接数

Apache是一个跨平台的web服务器&#xff0c;由于其简单高效、稳定安全的特性&#xff0c;被广泛应用于计算机技术的各个领域。现在&#xff0c;Apache凭借其庞大的用户数&#xff0c;已成为用户数排名第一的web服务器。 尽 管如此&#xff0c;在实际的生产环境中&#xff0c;我…