• 大小: 188KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 拓扑排序  

资源简介

大学的每个专业都要进行排课。假设任何专业都有固定的学习年限,每学年含两学期,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的。每门课程恰好占一个学期,假定每天上午与下午各有5节课。试在这样的前提下设计一个教学计划编制程序

资源截图

代码片段和文件信息

/*//////////////////////////////////////////////////////////
///////////4、实现课程的拓扑排序。(选)(加)
   问题描述:软件专业的学生要学习一系列课程,其中有些课程必须在其先修课程完成后才能学习,具体关系见下表:
课程编号 课程名称 先决条件
C1 程序设计基础 无
C2 离散数学 C1
C3 数据结构 C1,C2
C4 汇编语言 C1
C5 操作系统 C3
假设每门课程的学习时间为一学期,试为该专业的学生设计教学计划,使他们能在最短的时间内修完这些课程。
 

//////////由小谢编辑,只作学习参考,不能直接复制作为作业
///////////本人已将作品放在www.edugoo.com/guangxi/bbs上供大家学习使用
///////////////////////////////////////////////////////////*/
//拓扑排序topSort.cpp
#include
//#include
#include
typedef struct
{char w1w2;
 float w;
}RCW;
#include “graph4.h“
typedef struct
{int *data;
 int maxtop;
}Stack;

void TopSort(Graph *G)
{int ijndcount=0*D;
 Stack S;
 if(G->size==0) return;
 n=G->size;
 S.data=new int[n];
 S.max=n;S.top=-1;

 D=new int[n];
 for(j=0;j  {d=0;
   for(i=0;i    if(G->edge[i][j]!=0) d++;
    D[j]=d;//统计入度
    if(d==0)//入度为0
     {if(S.top==S.max-1)
       {cout<<“Stack is full!\n“;exit(1);}
      S.top++;
      S.data[S.top]=j;//记录入度为0的点
     }
  }

 while(!(S.top==-1))//如果有入度为0的点.....
 {  int w=1ww=0;
 if(S.top==-1)
    {cout<<“Pop an empty stack!\n“;exit(1);}
     S.top--;
 i=S.data[S.top+1];


if (S.top+1==0)
{
cout<data[i]<
}
if (S.top+1!=0)
{cout<data[i];//输出点

}

  count++;//计算曾经输出的点的个数
 for(j=0;j  if(G->edge[i][j]!=0)
  {D[j]--;
   if(D[j]==0)
    {if(S.top==S.max-1)
       {cout<<“Stack is full!\n“;exit(1);}
      S.top++;
      S.data[S.top]=j;//修改之后入度为0,入站记录
 }}}//while(!(S.top==-1))
 if(count  cout<<“\nThere is a cycle.“;
 free(D);
 free(S.data);
}
void main()
{cout<<“经拓扑排序后,结果为:\n“;
 Graph G;int n=5e=5;//int n=6e=8;//n为顶点数e为边数
 RCW rcw[5]={{‘a‘‘b‘1}{‘a‘‘c‘1}{‘a‘‘d‘1}{‘b‘‘c‘1}
             {‘c‘‘e‘1}};//1表示两点之间有联系
 SetGraph(&Gn);
 MakeGraph(&Grcwne);
 TopSort(&G);
 free(G.data);//释放空间
 free(G.visited);
 for(int i=0;i free(G.edge);
 cin.get();//等待函数(可以去掉哦)
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2005-09-15 07:08  课程安排,用拓扑排序实现\
     目录           0  2005-09-15 07:08  课程安排,用拓扑排序实现\www.cnzz.cn\
     目录           0  2005-09-06 12:46  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\
     文件        1815  2005-09-06 13:09  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\BuildLog.htm
     文件      229421  2005-09-06 10:01  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\topSort.exe
     文件      264832  2005-09-06 10:01  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\topSort.ilk
     文件       50176  2005-09-06 10:02  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\vc60.idb
     文件       61440  2005-09-06 10:01  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\vc60.pdb
     文件       11264  2005-09-06 13:09  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\vc70.idb
     文件       36864  2005-09-06 13:09  课程安排,用拓扑排序实现\www.cnzz.cn\Debug\vc70.pdb
     文件         878  2005-09-06 10:01  课程安排,用拓扑排序实现\www.cnzz.cn\graph4.h
     文件        2343  2005-09-06 13:08  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.cpp
     文件        3413  2005-09-04 13:48  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.dsp
     文件         520  2005-09-04 13:55  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.dsw
     文件       19456  2005-09-06 13:10  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.ncb
     文件       48640  2005-09-06 10:02  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.opt
     文件         248  2005-09-06 10:02  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.plg
     文件         903  2005-09-06 13:09  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.sln
     文件        3978  2005-09-06 13:09  课程安排,用拓扑排序实现\www.cnzz.cn\topSort.vcproj
     文件       50118  2004-11-30 03:27  课程安排,用拓扑排序实现\使用说明.CHM

评论

共有 条评论