Adjlist中的firstarc成员尚未分配内存,可以这样做:
V.vertices[0].firstarc = new ArcNode;
还有nextarc也需要分配内存。
# include
# include
using namespace std;
# define NULL 0
# define MAX_VERTEX_NUM 20
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;
int *info;
}ArcNode;
typedef struct VNode{
string data;
ArcNode *firstarc;
}VNode,Adjlist[MAX_VERTEX_NUM];
typedef struct{
Adjlist vertices;
int vexnum,arcnum;
int kind;
}ALGraph;
void main(){
ALGraph V;
V.arcnum=4;
V.vexnum=4;
V.kind=1;
V.vertices[0].data="V1";
V.vertices[0].firstarc->adjvex=1;//这里firstarc没有被赋值,所以它并没有指向实际的变量。
V.vertices[0].firstarc->nextarc->adjvex=2;
V.vertices[0].firstarc->nextarc->nextarc=NULL;
V.vertices[1].data="V2";
V.vertices[1].firstarc=NULL;
V.vertices[2].data="V3";
V.vertices[2].firstarc->adjvex=3;
V.vertices[2].firstarc->nextarc=NULL;
V.vertices[3].data="V4";
V.vertices[3].firstarc->adjvex=0;
V.vertices[3].firstarc->nextarc=NULL;
}