哪位高手帮我看看这个C++邻接表的程序

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:26:38
程序如下,编译和连接都通过了,但一运行就出错了。
# include <iostream>
# include <string>
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;
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[

Adjlist中的firstarc成员尚未分配内存,可以这样做:
V.vertices[0].firstarc = new ArcNode;
还有nextarc也需要分配内存。

# include <iostream>
# include <string>
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=&qu