youxiangtulinjiebiao-程序错误求修改!!!!

问题描述

程序错误求修改!!!!

请问下面代码段中有向图邻接表的建立错在哪了??求帮助!!!!
#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);
}

时间: 2024-09-19 21:35:40

youxiangtulinjiebiao-程序错误求修改!!!!的相关文章

aapt.exe应用程序错误。。clean 还有Silent修改好也没用,求大神帮忙啊

问题描述 aapt.exe应用程序错误..clean 还有Silent修改好也没用,求大神帮忙啊 解决方案 解决了,在menu中定义了item的title,但是@string的值没有在strings中定义name 解决方案二: 这个版本我用了一段时间了,本来没什么问题

c语言-求修改一下这个程序,有两个小问题

问题描述 求修改一下这个程序,有两个小问题 主要问题是:1.插入新的事件时,原有事件的优先级变化出错,例如,在原有优先级分别为1.2的事件中,插入另一个优先级为2的事件,前者应变为1,3,而程序结果为3,3 2.关闭运行程序的窗口,再打开,无法读取之前的数据 程序如下: c语言实验报告:电子记事本的实现 解决方案 代码贴出来才好修改啊 解决方案二: #include #include #include #define N 100 struct date { int year; int month

c语言-@C语言数据结构大神:顺序栈求n!。13行的错误怎么修改?为啥说我定义栈错误?

问题描述 @C语言数据结构大神:顺序栈求n!.13行的错误怎么修改?为啥说我定义栈错误? # include<stdio.h> # include<stdlib.h> # define Max_Size 50 typedef struct{//typedef是小写开头! //注意此处的top是整形指针 int data[Max_Size]; int top; }SeqStack,*PSeqStack; void Init_SeqStack(PSeqStack S) { S->

C语言初学妹子求大神解决程序错误问题,求正解

问题描述 C语言初学妹子求大神解决程序错误问题,求正解 /*分别用while.do-while和for循环求:1!+2!+...+n!. 设计一个主界面,实现连续读入不同的n值并求解:*/ #include //用while实现 int main() { while(1) { int i=1,j=1,s=0,m=1; int n; printf("请输入n的值:n"); scanf("%dn",&n); if(n<1) break; else { s=

【编程错误求指教】计算一个数字前的所有数字中1出现的次数

问题描述 [编程错误求指教]计算一个数字前的所有数字中1出现的次数 function deal(m) { var n = 0, i = 0,h = 0; for (; n < m + 1; n++) { i = n; while (i > 0) { if ((i % 10) == 1) { h++; }; i /= 10; }; }; alert(h); }; deal(11); 计算11之前包括11数字中1出现的次数 错在哪里 11的结果是3 谢谢 解决方案 直接用正则表达式就可以了. va

笔记本换成XP系统后IExplore.exe应用程序错误

笔记本换成XP系统后,单击我的电脑或者别的时候,有时会提示,下面的错误提示: --------------------------- IExplore.exe - 应用程序错误 --------------------------- "0x00a1bdb3" 指令引用的 "0x00000001" 内存.该内存不能为 "read". 要终止程序,请单击"确定". 要调试程序,请单击"取消". --------

解决SysFader:IEXPLORE应用程序错误

最近安装了IE8浏览器玩玩,但是发现一个严重的问题,就是在访问某些页面的时候,经常会出现"ysFader:IEXPLORE.EXE - 应用程序错误"的提示,提示内容为"0x0262d580指令引用的0x0262d580内存.改内存不能read",每次不一定相同,但是都是由于SysFader引起的错误. icech的软件环境为: - Windows XP操作系统 - IE8浏览器(没有安装任何浏览器插件) 所以icech搜索了很多解决的方法,有的说重新注册dll文件

Font Capture:AcrobatInfo.exe 应用程序错误的解决办法

Font Capture:AcrobatInfo.exe 错误,AcrobatInfo.exe 错误,Font Capture错误的最简单的解决办法,终极解决方案. 出 现这个错误的朋友大部分都是安装Adobe Acrobat 9 Pro之后才会出现的,而且不一定要打开使用Adobe Acrobat 9 Pro,在使用电脑,打开浏览器等多种时候都会提示这个"Font Capture:AcrobatInfo.exe应用程序错误的内存错误",很严重,经常会弹出这个错误. 最简单的解决办法:

打印机提示spoolsv.exe应用程序错误该怎么办

  打印机是生活中比较常用的电子设备,最近有用户在使用打印机的时候win7 64位提示"spoolsv.exe应用程序错误,会被windows关闭"错误窗口,导致打印机无法正常使用.出现这种情况主要是打印机相关服务没有开启所引起的,我们可以按照以下方式将print spooler服务启动即可,大家就一起来看看吧. 具体的解决方法/步骤: 1.打开电脑之后,点击"开始"菜单,找到里面的[运行]选项,直接点击打开. 2.在弹出运行对话框里面输入[regedit]命令字符