c语言 编译器 自动 提示,我觉得这样就没错,怎么编译器老提示错误,求解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#define MAXNUM 100

#define FALSE 0

#define TRUE 1

int visited[MAXNUM];

typedef char VertexType; //边表结点

typedef struct node

{

int adjvex;

struct node *next;

}EdgeNode; //顶点表结点

typedef struct vnode

{

VertexType vertex;

EdgeNode * firstedge;

}VertexNode;

typedef VertexNode AdjList[MAXNUM];//AdjList是邻接表类型名 //简单的应用无需进行下列类型定义,直接使 用AdjList类型

typedef struct

{

AdjList adjlist;//邻接表

int n,e;//图中当前定点数和变数

//int kind;//图的种类和标志

}ALGraph; //建立无向图的邻接表

void CreateMGraph(ALGraph *G)

{

int i,j,k;

EdgeNode *s;

printf("请输入图的顶点数和边数:\n");

scanf("%d%d",&G->n,&G->e);//读入顶点数和边数

for(i=0;in;i++)//建立顶点表

{

fflush(stdin);

scanf("%c",G->adjlist[i].vertex);//读入定点信息

G->adjlist[i].firstedge=NULL;//边表置为空表

}

for(k=0;ke;k++)//建立边表

{

scanf("%d%d",&i,&j);//读入(vi,vj)的顶点对序号

s=(EdgeNode*)malloc(sizeof(EdgeNode));//生成边表结点

s->adjvex=j;//邻接点序号为j

s->next=G->adjlist[i].firstedge;

G->adjlist[i].firstedge=s;//将新的结点*s插入顶点vi的边表头部

s=(EdgeNode*)malloc(sizeof(EdgeNode));

s->adjvex=i;//邻接点序号为i

s->next=G->adjlist[j].firstedge;//将新的结点*s插入顶点vj的边表头部

G->adjlist[j].firstedge=s;

}

} //深度优先遍历邻接表

void DFSTraverse(ALGraph *G)

{

int i;

for(i=0;in;i++)

visited[i]=FALSE;//标志向量初始化

for(i=0;in;i++)

if(!visited[i])//vi未被访问过

DFS(G,i);//以vi为源点开始DFS搜索

} //邻接表深度优先搜索

void DFS(ALGraph *G,int i)

{

EdgeNode *p;

printf("visit vertxt:%c",G->adjlist[i].vertex);//访问顶点vi

visited[i]=TRUE;//标记vi已访问

p=G->adjlist[i].firstedge;//取vi边表的头指针

while(p)

{

if(!visited[p->adjvex])//则vi尚未被访问

DFS(G,p->adjvex);//以vj为出发点向纵深搜索

p=p->next;//找vi的下一邻接点

}

} int main()

{ ALGraph G;

CreateMGraph(&G);

DFSTraverse(&G);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值