- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中南大学数据结构拓扑实验报告
目录
一、问题描述……………………………3
二、基本要求……………………………3
三、数据结构的设计……………………3
四、软件模块结构图……………………4
五、程序流程图…………………………4
六、源程序………………………………5
七、调试分析……………………………12
八、测试数据……………………………13
九、用户使用手册………………………15
十、心得体会……………………………15
一、问题描述
拓扑排序问题
问题描述:采用适当的存储结构,实现有向网的存储,建立,输入,显示,以及实现对有向无环图的拓扑有序序列的输出。
二、基本要求
(1)熟练掌握图的基本存储方法;熟练掌握图的深度优先和广度优先搜索方法;
掌握AOV;掌握AOE。有向图可以拓扑排序的条件是:图中没有环。方法: 从图中选择一个入度为0的点加入拓扑序列。 从图中删除该结点以及它的所有出边(即与之相邻点入度减1)。反复执行这两个步骤,直到所有结点都已经进入拓扑序列。
五、程序流程图
按照流程图的具体分析如下:
图像输入:建立一个有向无环图,要考虑到输入的方式尽量方便全面,采用输入弧的方式,输入每条弧的链接的两个结点。
判断图是不是有向无环图:完成输入后,队列应该是满的。选取入度为零的结点,入队列,调整数组,循环进行。如果队列不满,则输入的图不符合要求,应该重新输入。
拓扑排序:现在所得的弧是有向无环,再循环出队列,按照队列固有的顺序进行输出即可,排序完成。
六、源程序
头文件:
// jkl.h : PROJECT_NAME 应用程序的主头文件
//
#pragma once
#ifndef __AFXWIN_H__
#error 在包含此文件之前包含“stdafx.h”以生成 PCH 文件
#endif
#include resource.h // 主符号
// CjklApp:
// 有关此类的实现,请参阅 jkl.cpp
//
class CjklApp : public CWinApp
{
public:
CjklApp();
// 重写
public:
virtual BOOL InitInstance();
// 实现
DECLARE_MESSAGE_MAP()
};
struct node
{
int adjvex;
node * next;
};
struct graph
{
int vexter;
int in;
node * firstedge;
};
typedef struct
{
int *base;
int *top;
int stacksize;
}sqstack;
extern CjklApp theApp;// jklDlg.cpp : 实现文件
//
#include stdafx.h
#include jkl.h
#include jklDlg.h
#include malloc.h
#include stdio.h
#include WzdSplash.h
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
graph inDegree[50];
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
void initstack(sqstack S)
{
S.base=(int *)malloc(sizeof(int));
S.top=S.base;
S.stacksize=50+1;
}
void createadlist(int tab[],graph inDegree[],int n,int e)//创建邻接链表
{
int i,k,j;
int M=0;
node * q;
for(i=1;i=n;i++)
{
inDegree[i].vexter=i;
inDegree[i].in=0;
inDegree[i].firstedge=NULL;
}
for(k=1;k=e;k++)
{
i=tab[M];
j=tab[++M];
printf(%d%d,i,j);
M++;
inDegree[j].in++;
q=(node *)malloc(sizeof(struct node));
q-adjvex=j;
q-next=inDegree[i].firstedge;
inDegree[i].firstedge=q;
}
}
bool TopoSort(graph inDegree[],int n,CString str)
{
int i,v,count=0;
sqstack S;
node * p;
initstack(S);
for(i=1;i=n;i++)
if(inDegree[i].in==0)
*S.top++=i;
您可能关注的文档
最近下载
- 普通心理学第五版PPT完整全套教学课件.pptx VIP
- 2023安徽长丰科源村镇银行招聘5人笔试历年典型考题及考点剖析附带答案详解.docx VIP
- 《GBT13341-1991-质量损失率的确定和核算方法》.pdf
- 节约用水条例培训解读课件.pptx VIP
- MX480路由器操作手册.doc VIP
- 山东省临沂市蒙阴县第一中学2024-2025学年高三下学期第三次模拟考试语文试题(含答案).pdf VIP
- 2024安徽长丰科源村镇银行员工招聘笔试笔试历年典型考题及考点剖析附带答案详解.docx VIP
- 冬季行车安全知识培训课件.pptx VIP
- 静脉输液团体标准课件.pptx VIP
- 冬季行车安全培训漫画课件.pptx VIP
原创力文档


文档评论(0)