资源简介
无向图 破圈法求最小生成树
WIN32控制台应用程序 VS2010以上编译运行成功
数据结构上机作业
图用的是邻接矩阵表示方法
代码片段和文件信息
#include
#include
#define INF 9999
#define UNVIS 0
#define VIS 1
using namespace std;
class node{
public:
char value;
node()
{
}
};
class graph{
public:
int save_i;
bool stop_push_vector;
bool find_flag;
vector myvec;
int ** matrix;
bool ** edge_flag;
bool * mark;
node * nodes;
int length;
bool haveloop()
{
myvec.clear();
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
if(i==j)
edge_flag[i][j]=VIS;
else
edge_flag[i][j]=UNVIS;
}
}
if(DFS_search()==true)//有环
{
//删除最大的边 在myvec中有记录
return true;
}
else
return false;
}
graph(int num=5)
{
length=num;
mark = new bool[length];
nodes = new node[length];
matrix = new int*[length];
edge_flag=new bool*[length];
for (int i = 0; i < length; i++)
{
edge_flag[i]=new bool[length];
}
for (int i = 0; i < length; i++)
{
matrix[i]=new int[length];
}
//初始化
for (int i = 0; i < length; i++)
{
mark[i]=UNVIS;
}
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
if(i==j)
matrix[i][j]=0;
else
matrix[i][j]=INF;
}
}
//输入顶点value
cout<<“输入“< for (int i = 0; i < length; i++)
{
cin>>nodes[i].value;
}
}
int get_su(char value)
{
for (int i = 0; i < length; i++)
{
if(nodes[i].value==value)
return i;
}
cout<<“erro“;
return -1;
}
void setedge(char ichar jint weight)
{
matrix[get_su(i)][get_su(j)]=weight;
matrix[get_su(j)][get_su(i)]=weight;
}
bool DFS_search()
{
//重置标记
find_flag=false;//没找到环
stop_push_vector=false;
for (int i = 0; i < length; i++)
{
mark[i]=UNVIS;
}
for (int i = 0; i < length; i++)
{
if(find_flag==false &&mark[i]==UNVIS)
DFS_S(i);
}
if(find_flag==true)
{
//找到并删除存储在myvec中最大的边
vector::iterator i;
node * p1*p2;
p1=*(myvec.begin());
p2=*(myvec.begin()+1);
int max_edge = matrix[get_su(p1->value)][get_su(p2->value)];//前2个点的边的长
for (i = myvec.begin()+1; (i+1) != myvec.end(); i++)//从第(23)个边开始 到end-1end
{
if( matrix[get_su((*i)->value)][get_su((*(i+1))->value)] > max_edge)
{
max_edge = matrix[get_su((*i)->value)][get_
- 上一篇:m行k列矩阵乘以k行n列矩阵
- 下一篇:C++迷宫问题 寻找最短路径
相关资源
- C++迷宫问题 寻找最短路径
- m行k列矩阵乘以k行n列矩阵
- vibe算法opencv+c++,RGB图像可用
- VC++基于mfc 实现对话框打开读取txt文件
- C++编程的猜单词游戏
- 通用弹道仿真计算程序-C++源代码
- gnss卫星定位 c++ O文件N文件
- 银行家算法c++源代码
- c++ ten超级井字棋源码
- 个人通讯录c++版完整代码
- 全国青少年信息学奥林匹克竞赛教程
- Visual C++ Build Tools 2015 离线包.part1/7
- vc++ 2005 express 完整安装包
- C++ 数据采集
- fastMatch的c++实现(需要opencv支持)
- 基于c++的简单文件传输
- 《C++ GUI QT编程》教程配套
- Visual C++项目开发案例全程实录(第二
- C++ Primer Plus 6th Edition source code files
- 日历管理系统.cpp
- CRC32校验程序源代码( C++)
- VC++之MFC类库中文手册一怀去意---
- 华科大c++上机实验答案
- 普通算术编码的C++实现
- 自适应算术编码c++程序
- c/c++控制台游戏
- 数据结构编程题目及答案
- PE文件格式解析MFCC++源码
- VS2010之MFC入门到精通教程1-55全部
- 基于C++的实时数据库的设计与实现
评论
共有 条评论