图的广度遍历

来源:百度知道 编辑:UC知道 时间:2024/05/15 01:47:38
# define n 7
#define null 0
int g[n][n]={ };
int ver[n]={ };
int visited[n]={0,0,0,0,0,0,0};

int empty(int *front, int *rear)
{if (*front==(*rear+1)%n) return 1;
else return 0;}

int enqueue(int q[],int j, int *front, int *rear)
{

}

int dequeue(int q[], int *front, int *rear)
{

}

void bfsm(int i)

{

}

void main()
{
int i;
printf("\nplease input the num of the first char: ");
scanf("%d",&i);
bfsm(i);

}

高手帮忙补缺

int enqueue(int q[],int j, int *front, int *rear) {
return q[*rear = (*rear + 1) % n] = j;
}

int dequeue(int q[], int *front, int *rear) {
int ret = q[*front];
*front = (*front + 1) % n;
return ret;
}

void bfsm(int s) {
int front = 1, rear = 0;
enqueue(ver, s, &front, &rear);
visited[s] = 1;
while (!empty(&front, &rear)) {
int tmp = dequeue(ver, &front, &rear);
printf("%d ", tmp);
for (int i = 0; i < n; ++i) if (!visited[i] && g[tmp][i]) {
enqueue(ver, i, &front, &rear);
visited[i] = 1;
}
}
printf("\n");
}