资源简介

键盘输入数据,建立一个有向图的邻接表,并输出该邻接表;在有向图的邻接表的基础上计算各顶点的度,并输出;以有向图的邻接表为基础实现并输出它的拓扑排序序列;

资源截图

代码片段和文件信息

#include
#include
struct IkGraph
{
int data;
struct IkGraph *next;
};
int menu()
{
printf(“-------------------------------------------------------\n“);
printf(“1:键盘输入数据,建立一个有向图的邻接表,并输出该邻接表\n“);
printf(“2:在有向图的邻接表的基础上计算各顶点的度,并输出\n“);
    printf(“3:以有向图的邻接表为基础实现并输出它的拓扑排序序列\n“);
printf(“0:退出\n“);
    printf(“--------------------------------------------------------\n“);
printf(“请输入要选择的功能:“);
int chose;
scanf(“%d“&chose);
return chose;
}
int* inD(IkGraph *Lint nint *in)
{
IkGraph *p;
for(int i=0;i {
if(L[i].next!=NULL)
{
p=L[i].next;
while(p!=NULL)
{
in[p->data-1]++;
p=p->next;
}
}
}
    return in;
}
int* outD(IkGraph *Lint nint *out)
{
IkGraph *p;
for(int i=0;i {
if(L[i].next!=NULL)
{
p=L[i].next;
while(p!=NULL)
{
out[L[i].data-1]++;
p=p->next;
}
}
}
    return out;
}
void main()
{
int chose;
int nij;
IkGraph *p;
int **node*in*out;
int flag=0count=0top=0;
int *stack;
struct IkGraph *list*tem;
loop: chose=menu();
switch(chose)
{
case 1:
        printf(“请输入顶点的个数:“);
         scanf(“%d“&n);
            node=(int **)malloc(n*sizeof(int *));
         for(i=0;i             node[i]=(int *)malloc(n*sizeof(int));
printf(“请输入各条边的连通性(以0或1替代0表示不连通1表示连通):\n“);
         for(i=0;i         for(j=0;j {
if(i!=j)
{
                      printf(“%d->%d的连通性:“i+1j+1);
                   scanf(“%d“&node[i][j]);
}

        list=(IkGraph *)

评论

共有 条评论