没有合适的资源?快使用搜索试试~ 我知道了~
C++无向图代码
5星 · 超过95%的资源 需积分: 50 104 下载量 13 浏览量
2014-01-11
20:21:54
上传
评论 4
收藏 8KB TXT 举报
温馨提示
试读
13页
1.建立无向网的邻接表存储结构:要求:从键盘输入无向网的顶点数和边数;然后以"顶点1,顶点2,权值"的方式输入无向网的各边。 2.输出邻接表:输出形式为:顶点:顶点编号 权值->顶点编号 权值->… 3.求出无向网中各顶点的度,并输出。 4.判断给定的无向网是否是通连网? 5.写一算法求无向网的连通分量的个数并输出各连通分量的顶点集合。 6.对该无向网进行深度优先搜索遍历,并显示遍历序列。 7.删除无向网中指定的一条边。 8.判断两个顶点Vi,Vj是否存在路径
资源推荐
资源详情
资源评论
/*
1. 建立无向网的邻接表存储结构:要求:从键盘输入无向网的顶点数和边数;
然后以"顶点1,顶点2,权值"的方式输入无向网的各边。
2. 输出邻接表:输出形式为:顶点:顶点编号 权值->顶点编号 权值->…
3. 求出无向网中各顶点的度,并输出。
4. 判断给定的无向网是否是通连网?
5. 写一算法求无向网的连通分量的个数并输出各连通分量的顶点集合。
6. 对该无向网进行深度优先搜索遍历,并显示遍历序列。
7. 写一算法,删除无向网中指定的一条边。
8. 写一算法,判断两个顶点Vi,Vj是否存在路径
实验前请完成邻接表的相关数据类型的定义,
并确定一个连通的无向网和一个非连通的无向网,以用于测试。
*/
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
const int MaxVertices=20;
typedef string VerT;
typedef int DistT;
struct Edge{
int dest; //邻接顶点下标
DistT weight; //边的权值,或更多
Edge *next; //指针
};
struct Item{
VerT data; //顶点数据
Edge *adj; //邻接表指针
1. 建立无向网的邻接表存储结构:要求:从键盘输入无向网的顶点数和边数;
然后以"顶点1,顶点2,权值"的方式输入无向网的各边。
2. 输出邻接表:输出形式为:顶点:顶点编号 权值->顶点编号 权值->…
3. 求出无向网中各顶点的度,并输出。
4. 判断给定的无向网是否是通连网?
5. 写一算法求无向网的连通分量的个数并输出各连通分量的顶点集合。
6. 对该无向网进行深度优先搜索遍历,并显示遍历序列。
7. 写一算法,删除无向网中指定的一条边。
8. 写一算法,判断两个顶点Vi,Vj是否存在路径
实验前请完成邻接表的相关数据类型的定义,
并确定一个连通的无向网和一个非连通的无向网,以用于测试。
*/
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
const int MaxVertices=20;
typedef string VerT;
typedef int DistT;
struct Edge{
int dest; //邻接顶点下标
DistT weight; //边的权值,或更多
Edge *next; //指针
};
struct Item{
VerT data; //顶点数据
Edge *adj; //邻接表指针
};
class AdjTWGraph{
private:
Item Vertices[MaxVertices]; //表头向量
int numV; //当前顶点个数
int numE; //当前边的条数
public:
AdjTWGraph();
void CreatG(int n,int e); //建立邻接表
void PrintG(); //输出邻接表
void DepthFirst(){ //调用深度优先遍历
int v0,visit[MaxVertices];
for(int i=0;i<MaxVertices;i++)
visit[i]=0;
cout<<"请输入遍历起始顶点编号:";
cin>>v0;
while(v0<1||v0>numV){
cout<<"输入错误!请重输:";
cin>>v0;
}
DepthFirst(v0-1,visit);
cout<<endl;
}
void getDegree(); //求各顶点的度
void Connect(){ //判断无向网是否连通
int k=0;
int visit[MaxVertices];
for(int i=0;i<MaxVertices;i++)
class AdjTWGraph{
private:
Item Vertices[MaxVertices]; //表头向量
int numV; //当前顶点个数
int numE; //当前边的条数
public:
AdjTWGraph();
void CreatG(int n,int e); //建立邻接表
void PrintG(); //输出邻接表
void DepthFirst(){ //调用深度优先遍历
int v0,visit[MaxVertices];
for(int i=0;i<MaxVertices;i++)
visit[i]=0;
cout<<"请输入遍历起始顶点编号:";
cin>>v0;
while(v0<1||v0>numV){
cout<<"输入错误!请重输:";
cin>>v0;
}
DepthFirst(v0-1,visit);
cout<<endl;
}
void getDegree(); //求各顶点的度
void Connect(){ //判断无向网是否连通
int k=0;
int visit[MaxVertices];
for(int i=0;i<MaxVertices;i++)
剩余12页未读,继续阅读
资源评论
- ChikyoW2015-11-24谢谢分享,课设要做图相关的作业,帮助很大
- 二姑娘是个好姑娘2015-07-20挺好的。教材上的代码不够完整,看的有点吃力,自己写就很容易出问题。下下来的代码注释很完整,很清楚明白,帮助很大。谢谢
请叫我丶坑货
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功