C 十字鍊錶實現教學計畫編制

2021-09-02 23:38:01 字數 2108 閱讀 8757

[問題描述]

大學的每個專業都要制定教學計畫。假設任何專業都有固定的學習年限,每學年含兩學期,每學期的時間長度和學分上限值均相等。每個專業開設的課程都是確定的,而且課程在開設時間的安排必須滿足先修關係。每門課程有哪些先修課程是確定的,可以有任意多門,也可以沒有。每門課恰好佔乙個學期。試在這樣的前提下設計乙個教學計畫編制程式。用十字鍊錶實現圖的儲存結構。

輸入引數應包括:學期總數,一學期的學分上限,每門課的課程號、學分和直接先修課的課程號。

應允許使用者指定下列兩種編排策略之一:一是使學生在各學期中的學習負擔盡量均勻;二是使課程盡可能地集中在前幾個學期中。

[具體實現]

#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...