[問題描述]
大學的每個專業都要制定教學計畫。假設任何專業都有固定的學習年限,每學年含兩學期,每學期的時間長度和學分上限值均相等。每個專業開設的課程都是確定的,而且課程在開設時間的安排必須滿足先修關係。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒有。每門課恰好佔乙個學期。試在這樣的前提下設計乙個教學計畫編制程式。用十字鍊錶實現圖的儲存結構。
輸入引數應包括:學期總數,一學期的學分上限,每門課的課程號、學分和直接先修課的課程號。
應允許使用者指定下列兩種編排策略之一:一是使學生在各學期中的學習負擔盡量均勻;二是使課程盡可能地集中在前幾個學期中。
[具體實現]
#include #include #include using namespace std;
const int max_vertex_num=100;//最大課程總數
typedef struct arcbox
}arcnode;
typedef struct vexnode
vnode,adjlist[max_vertex_num];
typedef struct
algraph;
int getposition(string &el,algraph &g)
return -1;
}void creategraph(algraph &g)//構建圖
cout<<"請輸入課程先修關係總數:"<>g.arcnum;
cout<<"請順序輸入每個課程先修關係(如輸入c01 c02,表示):"<>n>>m;
p1=getposition(n, g);
p2=getposition(m, g);
g.vertices[p2].indegree++;
enode = new arcbox(p1, p2, nullptr, nullptr);;
if (g.vertices[p1].firstout==nullptr)
g.vertices[p1].firstout = enode;
else
if (g.vertices[p2].firstin==nullptr)
g.vertices[p2].firstin = enode;
else
}}/*
//利用十字鍊錶的特性尋找節點的入度(為了簡化,這裡在輸入的時候直接對入度進行統計)
void findindegree(algraph g, int indegree)//求圖中各節點的入度
}}*/
void topologicalsort_1(algraph g,int numterm,int uplcredit)//課程盡可能集中到前幾個學期
*/count=0;
k=0;
while(count!=g.vexnum && k<=numterm)
if((!s.empty())&&(sumcredit<=uplcredit))
else s.push(j);//將未輸出的節點重新壓入棧}}
}cout//int indegree[max_vertex_num];//存放各節點的入度
int i,j,k;
int maxnum;
int sumnum;
int count; //課程編排數目計數器
int sumcredit;//每個學期的課程學分累加器
//findindegree(g,indegree);
/*for(i=1;i<=g.vexnum;i++)
*/count=0;
k=0;
maxnum=g.vexnum/numterm+1;
sumnum=0;
while(count!=g.vexnum && k<=numterm)
if((!s.empty())&&(sumcredit<=uplcredit))
else s.push(j);//將未輸出的節點重新壓入棧}}
}cout<>numterm;
cout<<"請輸入乙個學期的學分上限:"<>uplcredit;
creategraph(g);
while(continue != 0)
return 0;
}
教學計畫編制問題(C語言)
輸入引數應包括 學期總數,一學期的學分上限,每門課的課程號 可以是固定佔 3位的字母數字串 學分和直接先修課的課程號。應允許使用者指定下列兩種編排策略之一 一是使學生在各學期中的學習負擔盡量均勻 是使課程盡可能地集中在前幾個學期中。若根據給定的條件問題無解,則報告適當的資訊 否則將教學計畫輸出到使用...
十字鍊錶及其C 實現
最近有個同學在用十字鍊錶做畢設,然後我手癢了就拿過來把他畢設拿過來 翻掉重寫。一方面以前也沒怎麼寫過十字鍊錶,另一方面好久不寫資料結構了隨便找個來練練手。至於他畢設的其他內容嘛應他本人要求結題前就不發了。圖大概一共有4中儲存方式 鄰接矩陣,鄰接表,邊集陣列,十字鍊錶。其實前三種資料結構都十分得好理解...
十字鍊錶的實現
include include includeusing namespace std typedef struct olist olist,olpointer typedef struct olhead col head olpointer malloc col create size sizeof...