知识大全 有限期作业排序和判断无向图的关节点算法设计源代码

Posted 关节点

篇首语:第一个青春是上帝给的;第二个的青春是靠自己努力的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 有限期作业排序和判断无向图的关节点算法设计源代码相关的知识,希望对你有一定的参考价值。

  //判断无向图的关节点

  #include

  #include

  #define Vnum

  typedef struct arcnode

  

  int adjvex;

  struct arcnode *nextarc;

  arcnode;

  typedef struct vexnode

  

  int vertex;

  arcnode *firstarc;

  adjlist[Vnum];

  typedef struct graphs

  

  adjlist adjlist;

  int vexnum arcnum;

  graph;

  void create(graph *g)

  

  int n e i j k;

  arcnode *p;

  cout<< 创建一个图:\\t ;

  cout<< 顶点数 ;

  cin>>n;

  cout<< \\t\\t边数 ;

  cin>>e;

  g >vexnum=n;

  g >arcnum=e;

  for(i= ;i

  

  g->adjlist[i].vertex=i;

  g->adjlist[i].firstarc=NULL;

  

  for(k=0;k

  

  cout<<"第"<

  cin>>i>>j;

  p=(arcnode *)malloc(sizeof(arcnode));

  p->adjvex=j;

  p->nextarc=g->adjlist[i].firstarc;

  g->adjlist[i].firstarc=p;

  

  

  void disp(graph *g)

  

  int i,have;

  arcnode *p;

  cout<<"输出图:"<

  for(i=0;i vexnum;i++)

  

  p=g->adjlist[i].firstarc;

  have=0;

  while(p!=NULL)

  

  cout<<"("< adjvex<<")";

  p=p->nextarc;

  have=1;

  

  if(have==1)

  cout<

  

  

  void dfs(graph g,int v,int visited[])

  

  arcnode *p;

  cout<

  cin>>v;

  cout<<"深度优先序列:";

  dfs(g,v,visited);

  cout<

  

  //有限期的作业排序

  #include

  #include "iomanip.h"

  void JOB_S(int n,int *D);

  void main()

  

  int *D,*P; //定义变量数组,采用动态分配内存

  int i,n;

  cout<<"请输入要处理的作业数n:";

  cin>>n;

  D=new int[n+1]; //作业的截止期限数组

  P=new int[n+1]; //作业的效益数组

  cout<<"请输入作业i的期限值D(1-"<

  for(i=1;i<=n;i++) //按非增顺序输入

  

  cout<<"作业"<

  cin>>D[i];

  

  cout<

  cout<<"请输入作业i的效益值P(1-"<

  for(i=1;i<=n;i++) //按非增顺序输入

  

  cout<<"作业"<

  cin>>P[i];

  

  cout<

  JOB_S(n,D);

  

  void JOB_S(int n,int *D)

  

  int i,k,r;

  int *J=new int[n+1];

  k=1;

  D[0]=0;

  J[0]=0;

  J[1]=1;

  for(i=2;i<=n;i++)

  

  r=k;

  while(D[J[r]]>D[i] && D[J[r]]!=r)

  r=r-1;

  if(D[J[r]]<=D[i] && D[i]>r)

  

  for(int x=k;x>=r+1;x--)

  J[x+1]=J[x];

  J[r+1]=i;

  k++;

  

  

  cout<<"该作业的最优处理顺序为:";

  for(i=1;i<=k;i++)

  cout<

  cout<

  

cha138/Article/program/sjjg/201311/23577

相关参考