m0_61431543 2022-06-28 21:32 采纳率: 50%
浏览 19
已结题

数据结构拓扑排序问题运行报错

数据结构 拓扑排序问题运行报错
#include"stdio.h"

#include<stdlib.h>
//#include "malloc.h"
#define MAXLEN 40 //有向图顶点最大数目
#define VEXTYPE int //有向图顶点类型
typedef struct gnode //每条弧对应一个结点
{int adjvex;
struct gnode *next;
}EDGENODE;
typedef struct
{int id; //顶点的入度
VEXTYPE vertex; //顶点的信息
EDGENODE *link; //每个顶点对应一单链表
}VEXNODE;
typedef struct
{VEXNODE adjlist[MAXLEN];//邻接链表
int vexnum,arcnum;//有向图的顶点数目、弧数目
int kind;//有向图的kind=1
}ADJGRAPH;
ADJGRAPH creat_adjgrapg()
{
EDGENODE p;
int i,s,d;
ADJGRAPH adjg;
adjg.kind=1;
printf("请输入顶点数和边数:");
scanf("%d,%d", &s, &d);
adjg.vexnum = s;
adjg.arcnum = d;
for(i = 0; i < adjg.vexnum;i++)//邻接链表顶点初始化
{printf("第%d个顶点信息:",i+1);
getchar();
scanf("%d", &adjg.adjlist[i].vertex);
adjg.adjlist[i].link = NULL;
adjg.adjlist[i].id = 0; }
for(i = 0; i < adjg.arcnum; i++)//每条弧的信息初始化
{printf("第 %d 条边的起始顶点编号和终止顶点编号:", i + 1);
scanf("%d,%d",&s,&d);
while(s < 1 || s > adjg.vexnum || d<1 || d> adjg.vexnum)
{printf("编号超出范围,重新输入:");
scanf("%d,%d", &s, &d);}
s --;
d --;
p=(EDGENODE
)malloc(sizeof(EDGENODE));//每条弧对应生成一个结点
p->adjvex = d;
p->next = adjg.adjlist[s].link;//结点插入对应的链表中
adjg.adjlist[s].link = p;
adjg.adjlist[d].id++;//弧对应的终端顶点入度加1
}
return adjg;
}

void topsort(ADJGRAPH ag)
//拓扑排序过程
{
int i, j, k, m, n, top;
EDGENODE *p;
n = ag.vexnum;
top = -1;
for(i = 0; i < n; i++)//将入度为0的顶点压入一个链线,top指向栈顶结点
if(ag.adjlist[i].id==0)//这是一个利用id为0的域链接起来的寄生线
{ag.adjlist[i].id = top;
top = i; }
m = 0;
while(top != -1)//当栈不空时,进行拓扑排序
{j = top;
top = ag.adjlist[top].id;
printf("%3d", ag.adjlist[j].vertex); //输出栈顶元素并删除栈顶元素
m++;
p = ag.adjlist[j].link;
while(p != NULL)
{k = p->adjvex;
ag.adjlist[k].id--; //删除相关的弧
if(ag.adjlist[k].id == 0)//出现新的入度为0的顶点,将其入栈
{ag.adjlist[k].id = top;
top = k;}
p = p->next; }
}
if(m < n)
printf("\n网中有环!\n");//拓扑排序过程中输出的顶点数<有向图中的顶点数
}
main()

{

ADJGRAPH ag = creat_adjgraph();
 topsort(ag);
   

}

img

最开始出错行书写为
{
ADJGRAPH ag;
ag = creat_adjgraph();
topsort(ag);

}
但报错,我就修改为
{
ADJGRAPH ag= creat_adjgraph();
topsort(ag);

}
但依然报错

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-06-28 22:08
    关注

    函数名明明是creat_adjgrapg()啊,你调用的时候写成了creat_adjgraph()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月28日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备