#include<iostream>
using namespace std;
#define MVNum 100 //最大顶点信息
#define OK 1
typedef char vertextype;
typedef int otherinfo;
//----------图的邻接变存储表示-----------
typedef struct arcnode { //边结点
int adjvex; //该边所指向顶点的位置
struct arcnode *nextarc; //指向下一条边的指针
char *info; //和边相关的信息
}arcnode;
typedef struct vnode {
char data; //顶点信息
arcnode *firstarrc; //指向第一条依附该顶点
}vnode,adjlist[MVNum];
typedef struct {
adjlist vertices; // 邻接表
int vexnum; //图的当前顶点数
int arcnum; //图的当前边数
}algraph;
int located(algraph g,char v)
{
int i;
for(i=0;i<g.vexnum;i++){
if(v==g.vertices->data){
return i;
}
}
}
void creat(algraph &g)
{
arcnode *p;
char v1,v2;
int i,k,j;
cin>>g.vexnum>>g.arcnum;
for(i=0;i<g.vexnum;i++){
cin>>g.vertices[i].data;
g.vertices[i].firstarrc=NULL;
}
for(k=0;k<g.arcnum;k++){
cin>>v1>>v2;
i=located(g,v1);
j=located(g,v2);
p=new arcnode;
p->adjvex=j;
p->info=NULL;
p->nextarc=g.vertices[i].firstarrc;
g.vertices[i].firstarrc=p;
}
cout<<"ok have created."<<endl;
}
void bianli(algraph g)
{
arcnode *p;
int i;
cout<<"共有"<<g.vexnum<<"个顶点:"<<endl;
for(i=0;i<g.vexnum;i++){
cout<<g.vertices[i].data<<" ";
}
cout<<"\n共有"<<g.arcnum<<"条边:"<<endl;
for (i = 0; i < g.vexnum;i++)
{
p=g.vertices[i].firstarrc;
while(p){
cout<<g.vertices[i].data << "→" <<g.vertices[p->adjvex].data << " ";
p=p->nextarc;
}
cout<<endl;
}
}
int main()
{
algraph g;
creat(g);
bianli(g);
}
你的测试数据是什麽?
我一直输入2,是有结果输出的