1.矩阵表示法:
若G(V,E)是含n个顶点的图,表示图G的矩阵为mat[n][n]
存在边的矩阵为mat[i][j]=1
不存在边的矩阵为mat[i][j]=0
无向图的相邻矩阵为对称
有向图的相邻矩阵为非对称
2.串链表示法:
利用矩阵表示法转换成串链表示法
void show(int arr[], int count) {
for (int i = 0; i < count; i++) {
for (int j = 0; j < count; j++) {
printf("%d ", arr[i * count + j]);
}
printf("\n");
}
}
void initialization(head_p point[], int visited[]) {
for (int n = 0; n < count; n++) {
visited[n] = FALSE;
//visited[n]为判定追踪时是否输出过,此案例中用不到
point[n] = (head_p)malloc(sizeof(head));
point[n]->num = vi;
point[n]->next = NULL;
}
}
有点冗长,有机会再把这段函式弄简洁
void make_list(int count, int arr[], head_p point[]) {
printf("\nAdjacency List\n");
head_p soure[MAX];
//sourse为储存point初始位置,当point不断存到next时,最後要有办法回到初位
for (int i = 0; i < count; i++) {
soure[i] = point[i];
root[i] = point[i];
point[i]->num = i;
point[i]->next = (head_p)malloc(sizeof(head));
point[i] = point[i]->next;
printf("\n%d", i);
for (int j = 0; j < count; j++) {
if (arr[i * count + j] == 1) {
printf("->%d", j);
point[i]->next = (head_p)malloc(sizeof(head));
point[i]->num = j;
point[i] = point[i]->next;
point[i]->next = NULL;
}
}
printf("\n");
point[i] = soure[i];
}
}
void show_allData(int count, head_p point[], int visited[]) {
for (int i = 0; i < count; i++) {
printf("\n----------%d----------\n", i);
printf("index=%d\tans=%d\n\n", i, visited[i]);
while (point[i]->next != NULL) {
printf("list[%d]->num=%d(%p)\n", i, point[i]->num, point[i]);
point[i] = point[i]->next;
}
}
}
ans为visited值,目前用不到
<<: 【教练我想写 C#】建啦哪次不建 Web API # Get
今天延续昨天的Listbox做一些更进阶的操作,加入删除、项目的排序和拖曳项目,这些都是平常常会用到...
ScrollView 今天要介绍的元件,当介面的内容开始变多时就派上用场了,毕竟手机萤幕或着各类3c...
转换为Genero後,FourJs’ 为了扩展整体程序语言,令他可以执行更多不一定与资料库相关的功能...
预处理器可以透过加快撰写程序的速度,但是自己的打字速度提升有限(换了Mac之後还变慢不少),Emme...
来到了第七天。老样子,先讲推荐的速解,如果你很急着用,这些 Add-On 可以帮上忙,第一是 For...