年轻的颜色 2013-12-02 12:45
浏览 795

程序错误求修改!!!!

请问下面代码段中有向图邻接表的建立错在哪了??求帮助!!!!
#include
using namespace std;
#define MaxVertexNum 50
typedef struct edge //建立邻接表存储结构,边表
{int AdjVertex; //邻接点域
struct edge *NextEdge; //指向下一个边结点
}EdgeType;
typedef struct //建立顶点表
{int Vertex; //顶点信息
int indegree; //入度域
EdgeType *FirstEdge; //邻接表头指针
}VertexType;
typedef VertexType adjlist[MaxVertexNum]; //定义adjlist为邻接表类型

void Toposort(adjlist GL,int n) //拓扑排序
{int top=0;
int tpv[12];
EdgeType *t;
int i,j,k;
for(i=1;i<=n;i++) //建立入度为0的顶点栈,邻接表数组中下标为0的元素未用
if(GL[i].indegree==0)
{GL[i].indegree=top;
top=i;
}
i=0; //i为已产生的拓扑序列的顶点个数
while(top!=0)
{j=top; //取得栈顶的顶点j
top=GL[top].indegree; //更新栈顶指示器
tpv[++i]=j; //输出顶点j
t=GL[j].FirstEdge; //取邻接表的第j个链表表头结点
while(t!=NULL)
{k=t->AdjVertex; //取顶点值

if(--(GL[k].indegree)==0) //顶点k的入度减1后是为0
{GL[k].indegree=top; //顶点k进栈
top=k;
}
t=t->NextEdge; //顶点j的下一个后继结点
}
}
if(i cout else if(i>=n)
{cout<<"拓扑序列为:"; //输出拓扑序列
for(i=1;i<=n;i++)
cout< }
}
void main()
{int i,j,k,n,e,I;
int v1,v2;
EdgeType *p,*q;
adjlist Graph;
cout cin>>n>>e;
cout<<"输入顶点的数据:"; //输入顶点的数据
for(k=0;k {cin>>Graph[k].Vertex;
Graph[k].FirstEdge=NULL;
}
cout<<"输入个顶点的入度:";
for(k=0;k {cin>>I;}
cout<<"输入图中各边:"; //输入图中各边
for(k=0;k {cin>>v1>>v2;
i=v1; //找到v1的序号
j=v2; //找到v2的序号
q=new EdgeType;
q->AdjVertex=j;
q->NextEdge=Graph[i].FirstEdge;
Graph[i].FirstEdge=q;
p=new EdgeType;
p->AdjVertex=i;
p->NextEdge=Graph[j].FirstEdge;
Graph[j].FirstEdge=p;
}
cout<<"图的邻接表结构为:"< for(i=0;i {cout v1=Graph[i].Vertex;
cout p=Graph[i].FirstEdge;
while(p!=NULL)
{v2=p->AdjVertex;
cout<<"-->"< p=p->NextEdge;
}
cout<<endl;
}
Toposort(Graph,12);
}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
    • ¥15 gradio的web端页面格式不对的问题
    • ¥15 求大家看看Nonce如何配置
    • ¥15 Matlab怎么求解含参的二重积分?
    • ¥15 苹果手机突然连不上wifi了?
    • ¥15 cgictest.cgi文件无法访问
    • ¥20 删除和修改功能无法调用
    • ¥15 kafka topic 所有分副本数修改
    • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
    • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?