(10分)请说明下列算法中的create和 MS 的功能,图示create建立的结构,最后的运行结果是什么?
#include
#include "malloc.h"
#define n 5
static char ch[n]={'a','b','c','d','e'};
static int a[n][n]={0,1,1,1,0, 1,0,1,1,0, 1,1,0,1,1, 1,1,1,0,1, 0,0,1,1,0};
typedef struct node{
int adjvex;
struct node *next;
}EdgeNode;
typedef struct vnode{
char vertex;
EdgeNode *firstedge;
}VertexNode[n];
VertexNode G;
typedef struct{
int front,rear; int count;
int data[n];
}CirQueue;
CirQueue *Q; //循环队列
void create (){
int i,j; EdgeNode *s;
for(i=0;i G[i].vertex=ch[i]; G[i].firstedge=0; } for(i=0;i for(j=0;j if (a[i][j]==1){ s=(EdgeNode*)malloc(sizeof(EdgeNode)); s->adjvex=j; s->next=G[i].firstedge; G[i].firstedge=s; } } } } void MS(int s){ int i; int Queuesize =n; EdgeNode *p; int visited[n]; for(i=0;i visited[i]=0; } Q=(CirQueue*)malloc(sizeof(CirQueue)); Q->front=0; Q->rear=0; Q->count=0; visited[s]=1; printf(" %c",G[s].vertex); Q->count++; Q->data[Q->rear]=s; Q->rear=(Q->rear+1)%Queuesize; while(Q->count!=0){ i=Q->data[Q->front]; Q->count--; Q->front=(Q->front+1)%Queuesize; p=G[i].firstedge; while(p){ if(visited[p->adjvex]==0){ visited[p->adjvex]=1; printf("%c",G[p->adjvex].vertex); Q->count++; Q->data[Q->rear]=p->adjvex; Q->rear=(Q->rear+1) %Queuesize; } p=p->next; } } } int main(){ create (); MS(0); }
【26考研辅导课程推荐】:26考研集训课程,VIP领学计划,26考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
启航教育热门私房课
MORE小班面授 名额有限 抢先体验
编辑推荐
最新内容
姓名
手机号