c语言 数据结构基本功能要求:基本功能要求:(1) 图的建立,要求采用邻接矩阵作为存储结构。(2) 输出结点的度(或出度

c语言 数据结构基本功能要求:
基本功能要求:
(1) 图的建立,要求采用邻接矩阵作为存储结构。
(2) 输出结点的度(或出度和入度)
(3) 将图的存储结构邻接矩阵转换为邻接链表。
测试数据:

测试数据

daisoo 1年前 已收到1个回答 举报

komghao 幼苗

共回答了12个问题采纳率:100% 举报

#include "stdio.h"
#define MAX 50
typedef struct LNode{
int data;
struct LNode *next;
}LNode;
void OutputDegree(int matrix[MAX][MAX], int n);
void Insert(LNode *head, int data);
void list(LNode *head);
void createAdjList(int matrix[MAX][MAX], int n, LNode *head[]);
void main()
{
int matrix1[MAX][MAX] = {{0,1,1},{1,0,1},{0,0,0}};
int matrix2[MAX][MAX] = {{0,1,0,1,0},{1,0,1,0,0},{0,1,0,1,1},{1,0,1,0,0},{0,0,1,0,0}};
int n; /* 顶点数 */
LNode *head[MAX];
int i;

n = 3;
printf("List degree of all vertex : n");
OutputDegree(matrix1, n);

for(i=0; idata = i+1;
}

createAdjList(matrix1, n, head);

printf("Adjancency List : n");
for(i=0; idata);
list(head[i]);
printf("n");
}

n = 5;
printf("List degree of all vertex : n");
OutputDegree(matrix2, n);

for(i=0; idata = i+1;
}

createAdjList(matrix2, n, head);

printf("Adjancency List : n");
for(i=0; idata);
list(head[i]);
printf("n");
}
}
/* 输出顶点的度 */
void OutputDegree(int matrix[MAX][MAX], int n)
{
int InDegree[MAX]; /* 入度 */
int OutDegree[MAX]; /* 出度 */
int i, j;

for(i=0; inext = NULL;

if(pre == NULL)
{
head->next = temp;
return;
}
for(; pre->next!=NULL; pre=pre->next);
pre->next = temp;
}
void list(LNode *head)
{
LNode *curr;
for(curr=head->next; curr!=NULL; curr=curr->next)
{
printf("%dt", curr->data);
}
}
/* 根据邻接矩阵构建邻接表 */
void createAdjList(int matrix[MAX][MAX], int n, LNode *head[])
{
int i, j;

for(i=0; i

1年前

5
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.037 s. - webmaster@yulucn.com