资源简介
键盘输入数据,建立一个有向图的邻接表,并输出该邻接表;在有向图的邻接表的基础上计算各顶点的度,并输出;以有向图的邻接表为基础实现并输出它的拓扑排序序列;
代码片段和文件信息
#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 *)
- 上一篇:二叉树建立 二叉树基本算法的实现
- 下一篇:TEXTQOL 封装
评论
共有 条评论