重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#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; in; i++)
{
head[i] = (LNode *)malloc(sizeof(LNode));
head[i]-data = i+1;
}
createAdjList(matrix1, n, head);
printf("Adjancency List : \n");
for(i=0; in; i++)
{
printf("%d : ", head[i]-data);
list(head[i]);
printf("\n");
}
n = 5;
printf("List degree of all vertex : \n");
OutputDegree(matrix2, n);
for(i=0; in; i++)
{
head[i] = (LNode *)malloc(sizeof(LNode));
head[i]-data = i+1;
}
createAdjList(matrix2, n, head);
printf("Adjancency List : \n");
for(i=0; in; i++)
{
printf("%d : ", head[i]-data);
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; in; i++)
{
InDegree[i] = OutDegree[i] = 0;
for(j=0; jn; j++)
{
InDegree[i] += matrix[j][i];
OutDegree[i] += matrix[i][j];
}
}
for(i=0; in; i++)
{
printf("vertex %d : In - %d, Out - %d\n", i+1, InDegree[i], OutDegree[i]);
}
}
void Insert(LNode *head, int data)
{
LNode *pre = head-next;
LNode *temp;
temp = (LNode*)malloc(sizeof(LNode));
temp-data = data;
temp-next = 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("%d\t", curr-data);
}
}
/* 根据邻接矩阵构建邻接表 */
void createAdjList(int matrix[MAX][MAX], int n, LNode *head[])
{
int i, j;
for(i=0; in; i++)
{
for(j=0; jn; j++)
{
if(matrix[i][j] != 0)
Insert(head[i], j+1);
}
}
}