当前位置:启航官网 > 考研报考 > 试题

(10分)请说明下列算法中的create和 MS 的功能,图示create建立的

(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小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。

免责声明:本平台部分帖子来源于网络整理,不对事件的真实性负责,具体考研相关内容请以各院校的官网通知为准。 如果本站文章侵犯到您的权利,请联系我们(400-108-7500)进行删帖处理。
下一篇 最后一页

启航教育热门私房课

MORE
  • 26考研VIP领学计划

    全程跟进
    形式:线上+线下
     

    查看详情

    在线咨询

  • 26考研专属VIP班

    联报优惠
    形式:线上
     

    查看详情

    在线咨询

  • 26在职考研课程

    专为在职人定制
    形式:线上
     

    查看详情

    在线咨询

2026考研

小班面授 名额有限 抢先体验

点击预约 

为你推荐

    姓名

    手机号

    获取答案
    扫描上方二维码免费领取学习资料