问题:定义结构体要分配空间,这个不知为什么?
有很长时间没写数据结构了,忙,也不知忙什么。。。下面创建的是无向图。主要是记得图的结构体的定义,我刚开始没想起来,查了资料才弄明白的。
代码:
#include <iostream>
#include <cstdlib>
using namespace std;
#define MAXVEX 20
typedef struct map
{
char vex[MAXVEX];
int arrMap[MAXVEX][MAXVEX];
int numvexs,numedges;
}mapNode;
int getPos(mapNode *g,char v) //返回顶点的位置
{
int i=0;
for(i=0;i<g->numvexs;i++)
{
if(g->vex[i]==v)
{
break;
}
}
if(i>=g->numvexs)
return -1;
return i;
}
void createGraph(mapNode* &g)
{
char p,q;
int m,n;
cout<<"please input the nums of the vexs and edges:";
cin>>g->numvexs;
cin>>g->numedges;
getchar();
cout<<"input the infor of the vexs:"<<endl;
for(int i=0;i<g->numvexs;i++)
{
cin>>g->vex[i];
}
for(int k=0;k<g->numvexs;k++) //初始化图矩阵
{
for(int r=0;r<g->numvexs;r++)
{
g->arrMap[k][r]=0;
}
}
for(int j=0;j<g->numedges;j++)
{
cout<<"please input two vexs:";
cin>>p>>q;
m=getPos(g,p);
n=getPos(g,q);
if(m==-1||n==-1)
{
cout<<"输入错误"<<endl;
return;
}
else
{
g->arrMap[m][n]=1;
g->arrMap[n][m]=1;
}
}
}
void playMap(mapNode *g)
{
for(int i=0;i<g->numvexs;i++)
{
for(int j=0;j<g->numvexs;j++)
{
cout<<g->arrMap[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
int main()
{
mapNode *mn=NULL;
mn=(mapNode *)malloc(sizeof(struct map));
if(!mn)
return -1;
cout<<"创建图:"<<endl;
createGraph(mn);
cout<<"输出图:"<<endl;
playMap(mn);
return 0;
}
运行结果: