问题:还是把邻接表的结构体定义搞明白,就没那么难了^^
代码:
#include
#include
using namespace std;
#define MAXV 20
typedef struct edgeNode //边表节点
{
int data;
struct edgeNode *next;
}edgeList;
typedef struct headNode //头节点
{
char vex;
edgeList *firstedge;
}headList;
typedef struct adjNode //邻接表
{
headList adjArr[MAXV];
int n,e; //图顶点数和边数
}*adjGraph;
void createAdjGraph(adjGraph &ag)
{
char c;
int p,q;
edgeList *s;
edgeList *m;
cout<
cin>>ag->n>>ag->e;
for(int i=0;in;i++)
{
cin>>c;
ag->adjArr[i].vex=c;
ag->adjArr[i].firstedge=NULL;
getchar();
}
for(int j=0;je;j++)
{
cout<
cin>>p>>q;
s=(edgeList*)malloc(sizeof(struct edgeNode));
if(!s)
return;
s->data=p;
s->next=ag->adjArr[q].firstedge;
ag->adjArr[q].firstedge=s;
m=(edgeList*)malloc(sizeof(struct edgeNode));
if(!m)
return;
m->data=q;
m->next=ag->adjArr[p].firstedge;
ag->adjArr[p].firstedge=m;
}
}
void showAdjGraph(adjGraph ag)
{
for(int i=0;in;i++)
{
cout<adjArr[i].vex<
while(ag->adjArr[i].firstedge!=NULL)
{
cout<adjArr[i].firstedge->data<
ag->adjArr[i].firstedge=ag->adjArr[i].firstedge->next;
}
cout<
}
}
int main()
{
adjGraph ag;
ag=(adjGraph)malloc(sizeof(struct adjNode));
if(!ag)
return -1;
cout<
createAdjGraph(ag);
cout<
showAdjGraph(ag);
return 0;
}
运行截图: