资源简介
这是数据结构(使用C语言)的教学编制问题 内含源码和报告
代码片段和文件信息
#include
#include
#include
#include
#include “SeqStack.h“
#include “ALGraph.h“
#define N 12
int TopologicalOrder(ALGraph GAdjList Rstruct Name name[])
{
int i k j = 0 count indegree[MAX_VER];
SqStack S;
ArcNode *p;
FindInDegree(G indegree); // 对各顶点求入度
InitStack(S); // 初始化栈
for (i = 0;i < G.vexnum;++i) //建零入度顶点栈S
if (!indegree[i]) Push(S i); // 入度为0者进栈
count = 0; // 对输出顶点计数
while (!StackEmpty(S))
{
Pop(S i);
printf(“%s(%d学分)“G.ver[i].dataG.ver[i].grades);
R[j++] = G.ver[i]; //将当前的拓扑序列保存起来
++count; // 输出i号顶点并计数
for (p =G.ver[i].first; p; p=p->next)// 对i号顶点的每个邻接点的入度减1
{
k = p->AdjOfV;
if (!(--indegree[k])) // 若入度减为0则入栈
Push(S k);
}
}
if (count < G.vexnum)
{
printf(“此有向图有回路无法完成拓扑排序“);
return 0;
}
else printf( “ 为一个拓扑序列“);
printf(“\n“);
int q=1Z=0;
while (q <= TotalOfTerms)
{
int C = R[Z].grades ;
printf(“\n第%d个学期应学课程:“q);
while (C <= MaxScores)
{
C = C + R[Z+1].grades;
if (Z < G.vexnum)
{
CmpOfStr(R[Z].datanameN);/*让C1~C12分别与12门课程对应起来*/
++Z;
}
}
printf(“\n“);
if (q == TotalOfTerms)printf( “\nOK Over!“);
q++;
}
return 1;/**/
}
void main()
{
ALGraph G;
AdjList R;
struct Name name[N]={{“C1“}{“C2“}{“C3“}{“C4“}{“C5“}{“C6“}{“C7“}{“C8“}{“C9“}{“C10“}{“C11“}{“C12“}};
printf(“ ***************教学计划编制问题**************\n“ );
printf( “请以课件9-2上课程先序图为例输入学期总数:“);
scanf(“%d“&TotalOfTerms);
getchar();
printf(“请输入学期的学分上限(8或9):“);
scanf(“%d“&MaxScores);
getchar();
CreateGraph(G);
Display(G);
TopologicalOrder(GRname);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-04-14 17:18 20091003768熊金莲—教学编制问题1
文件 867 2011-04-22 10:45 20091003768熊金莲—教学编制问题1\SeqStack.h
文件 2008 2011-04-22 10:52 20091003768熊金莲—教学编制问题1\教学计划编制问题.cpp
文件 4265 2011-04-22 10:55 20091003768熊金莲—教学编制问题1\ALGraph.h
文件 252928 2011-04-22 11:23 20091003768熊金莲—教学编制问题1\第二次上机实习报告.doc
----------- --------- ---------- ----- ----
260068 5
- 上一篇:LU分解法解线性方程组C语言
- 下一篇:一元多项式数据结构C语言
评论
共有 条评论