无向图的顺序存储结构(代码)

大家必须理解图的概念,在这就不做介绍了。下面直接展示代码:


//无向图的顺序存储结构

# include <stdlib.h>
# include <iostream.h>

# define zhi 40

//定义图的数据类型
struct mygraphic
{
char dian[zhi];//存放顶点的信息
int bian[zhi][zhi];//存放边的信息
int diannum;//存放顶点的个数
};

//图的初始化,给元素赋上相应的初值
void chushihua(struct mygraphic &tu)
{
int i,j;
tu.diannum=0;
for(i=0;i<zhi;i++)
{
tu.dian[i]='';//给存放图的顶点的变量赋初值
for(j=0;j<zhi;j++)
tu.bian[i][j]=0;//给存放图顶点和顶点关系的变量赋初值
}
}

//图的输入
void shuru(struct mygraphic &tu)
{
int i;
int j;
int num1;//存放总共要输入顶点的个数
char ch;//存放顶点信息

cout<<"请输入要输入的图的顶点的个数:";
cin>>num1;

if(num1>zhi)//程序的健壮性
{
cout<<"此图信息太大,无法存储该图!\n";
return;
}
//顶点信息的输入
for(i=0;i<num1;i++)
{
cout<<"请输入第"<<i+1<<"个顶点的信息:";
cin>>ch;
tu.dian[i]=ch;
}
tu.diannum=num1;
cout<<"顶点信息输入完成!\n\n\n";

//边的信息的输入
for(i=0;i<num1;i++)
{
cout<<"请依次输入第"<<i+1<<"个顶点和其他(包括自身)所有顶点是否可通?\n";

for(j=0;j<num1;j++)
{
cout<<"是否和第"<<j+1<<"个顶点可通(通:1;不同0):";
cin>> tu.bian[i][j];
}
cout<<"\n";
}
cout<<"边的输入结束!\n\n";
}


//图的输出函数
void shuchu(struct mygraphic &tu)
{
int i;
int j;
int k;
k=tu.diannum;
//输入第一行顶点的信息
cout<<" 顶 点";
for(i=0;i<k;i++)
cout<<" "<<tu.dian[i];

cout<<"\n";
for(i=0;i<k;i++)
{
cout<<" "<<tu.dian[i]<<" ";//第一列为顶点的信息

for(j=0;j<k;j++)
cout<<" "<<tu.bian[i][j];//顶点和顶点之间的关系
cout<<"\n";
}
cout<<"注意:1表示两顶点可通;0表示两顶点不可通!\n\n";
cout<<"输出操作已完成!\n\n";
}

//主函数
void main()
{
int option;//存放用户的选项

struct mygraphic tu;//定义存放图信息的变量类型
chushihua(tu);//初始化图的变量类型

option=0;//存放用户的选项
while(option!=3)
{
cout<<"\n 菜单\n\n";
cout<<" 1、输入图的信息\n";
cout<<" 2、输出图的信息\n";
cout<<" 3、退出\n\n";
cout<<"请输入选项:";
cin>>option;

switch(option)
{
case 1:
shuru(tu);
break;
case 2:
shuchu(tu);
break;
case 3:
break;
default:
break;
}
}

}


心得:对于图的存储,第一:我们要存储顶点的信息;第二:我们要存储顶点和顶点的关系。我们通过邻接矩阵的方式存放顶点和顶点的关系!不论是顺序存储还是链式存储,首先,要考虑,存放顶点的数据结构类型,存放顶点和顶点关系的数据结构类型,存放表头的数据结构类型,可能对于图存储的原理你很清楚,但是,你一定要亲自敲一敲,里面有很多值得我们注意的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值