版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:本科生導(dǎo)師制問題實(shí)驗(yàn)類型:綜合性實(shí)驗(yàn)實(shí)驗(yàn)日期:2012.5.301.問題描述(2)本科生導(dǎo)師制問題在高校的教學(xué)改革中,有很多學(xué)校實(shí)行了本科生導(dǎo)師制。一個(gè)班級(jí)的學(xué)生被分給幾個(gè)老師,每個(gè)老師帶n個(gè)學(xué)生,如果該老師還帶研究生,那么研究生也可直接帶本科生。本科生導(dǎo)師制問題中的數(shù)據(jù)元素具有如下形式:l 導(dǎo)師帶研究生(老師,(研究生1,(本科生1,本科生m1),(研究生2,(本科生1,本科生m2)l 導(dǎo)師不帶研究生(老師,(本科生1,本科生m)導(dǎo)師的自然情況只包括姓名、職稱;研究生的自然情況只包括姓名、班級(jí);本科生的自然情況只包括姓名、班級(jí)。2.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(2)本科生導(dǎo)師制問題
2、typedef struct GLNodechar name100; /*教師或?qū)W生的姓名*/char prof100; /*教師結(jié)點(diǎn)表示職稱,學(xué)生結(jié)點(diǎn)表示班級(jí)*/int type; /*結(jié)點(diǎn)類型:0-教師,1-研究生,2-本科生*/struct struct GLNode *hp, *tp; ptr; /*hp指向同級(jí)的下一結(jié)點(diǎn),tp指向下級(jí)的首結(jié)點(diǎn)*/GList;3.算法設(shè)計(jì)(2)本科生導(dǎo)師制問題l 建立:建立導(dǎo)師廣義表。l 插入:將某位本科生或研究生插入到廣義表的相應(yīng)位置。l 刪除:將某本科生或研究生從廣義表中刪除。l 查詢:查詢導(dǎo)師、本科生(研究生)的情況。l 統(tǒng)計(jì):某導(dǎo)師帶了多少個(gè)研
3、究生和本科生。l 輸出:將某導(dǎo)師所帶學(xué)生情況輸出。l 退出:程序結(jié)束。4.界面設(shè)計(jì)(2)本科生導(dǎo)師制問題5. 運(yùn)行、測試與分析(2)本科生導(dǎo)師制問題6、源代碼:(2)本科生導(dǎo)師制問題#includevoid menu()printf(*n);printf(1.%35sn,建立廣義表);printf(2.%35sn,插入學(xué)生);printf(3.%35sn,刪除學(xué)生);printf(4.%35sn,查詢信息);printf(5.%35sn,統(tǒng)計(jì)導(dǎo)師的研究生,本科生人數(shù));printf(6.%35sn,輸出廣義表);printf(7.%35sn,退出);printf(*n);/這部分源代碼int
4、main(int argc,char *argv)typedef *head;char str100;int choice;while(1)menu();printf(請輸入你要選擇的序號(hào):n);scanf(%d,&choice);switch(choice)case 1:printf(請輸入你想建立的標(biāo)準(zhǔn)廣義表,例如:(高老師-教授-0,(李平-一班-2,楊梅-二班-2),(李平-博士-0,(李平-三班-1,(李平-四班-2)n);scanf(%s,str);head=glistcreate(str);break;case 2:head=studentinsert(head);break;c
5、ase 3:head=studentdelete(head);break;case 4:enquire(head);break;case 5:studentcount(head);break;case 6:glistprint(head);break;case 7:return 0;return 0;7.實(shí)驗(yàn)收獲及思考熟悉了編譯環(huán)境,并且對程序調(diào)試中出現(xiàn)的一些問題有了較好的解決方法,為以后的實(shí)驗(yàn)打下了良好的基礎(chǔ)。學(xué)會(huì)了解決具體問題的方法,增強(qiáng)實(shí)踐能力,將理論與實(shí)踐相結(jié)合,以便于知識(shí)的扎實(shí)與鞏固。另一種方法。C語言#include #include #include typedef char D
6、ataType;#include GList.hvoid main() char str1=(a,b,c),(d),e); char str2=(a,b,c),(d),e); char hstr100; GLNode *h, *p; int depth, number, length; h=CreatGList(str1); printf(廣義表str1=%s,str2); DecomposeStr(str2, hstr); printf(n表頭=%s,hstr); printf( 表尾=%s,str2); depth=GListDepth(h); printf(n深度depth=%d,dep
7、th); length=GListLength(h); printf(n深度length=%d, length); number=GListAtomNum(h); printf(n原子元素個(gè)數(shù)number=%d, number); p=GListSearch(h,d); if (p!=NULL) printf(n數(shù)據(jù)元素%c在廣義表中, p-val.atom); else printf(n廣義表中不存在要查找的數(shù)據(jù)元素n); DestroyGList(h);頭文件:typedef struct GListNodeint tag; union DataType atom; /原子元素域 stru
8、ct subGL struct GListNode *head; /頭指針 struct GListNode *tail; /尾指針 subList; /子表域 val;GLNode;void DecomposeStr(char str, char hstr) int i, j, tag, n = strlen(str); char ch;ch = str0;tag = 0; for(i = 0; i = n-1; i+) if(stri = , & tag = 1 ) break;/搜索最外層的第一個(gè)逗號(hào) ch = stri; if(ch = () tag+; if(ch = ) tag-;
9、 if(i = n-1 & stri = ,)/廣義表表尾部分非空時(shí) for(j = 0; j i-1; j+) hstrj = strj+1;/取表頭字符串 hstrj = 0; /添加結(jié)束符 if(stri = ,) i+; str0 = (; /添( for(j = 1; i tag = 0; h-val.atom = str0; else/建立子表 h = (GLNode *)malloc(sizeof(GLNode); h-tag = 1; DecomposeStr(str, hstr); h-val.subList.head = CreatGList(hstr); if(strcm
10、p(str, () != 0) /表尾非空時(shí) h-val.subList.tail = CreatGList(str); else h-val.subList.tail = NULL; /賦值空指針 return h;int GListDepth(GLNode *h) int max, dep; GLNode *pre; if(h = NULL) return 1;/遞歸出口,空表深度為1 if(h-tag = 0) return 0; /遞歸出口,原子元素深度為0/遞歸求廣義表深度 pre = h; for(max = 0; pre != NULL; pre = pre-val.subLis
11、t.tail) dep = GListDepth(pre-val.subList.head); /求表頭深度 if(dep max) max = dep; return max + 1; int GListLength(GLNode *h) int number = 0; GLNode *p; for(p = h; p != NULL; p = p-val.subList.tail) number+; return number; int GListAtomNum(GLNode *h) if(h = NULL) return 0; else if(h-tag = 0) return 1; el
12、se return GListAtomNum(h-val.subList.head) + GListAtomNum(h-val.subList.tail); GLNode *GListSearch(GLNode *h, DataType x) GLNode *p; if(h=NULL) return NULL;/查找失敗遞歸出口 if(h-tag=0&h-val.atom=x) return h;/查找成功遞歸出口 if(h-tag=1&h-val.subList.head!=NULL) p=GListSearch(h-val.subList.head,x); /在頭鏈中查找 if (p!=NULL) return p; if(h-tag=1&h-val.subList.tail!=NULL) p=GListSearch(h-val.subList.tail,x); /在尾鏈中查找 if (p!=NULL) return p; return NULL; /回溯至上一層 void DestroyGList(GLNode
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年電梯設(shè)備租賃與改造升級(jí)合同3篇
- 碼頭建設(shè)爆破施工合同
- 珠寶店租賃璀璨人生租賃合同
- 煙草制品行業(yè)員工待崗協(xié)議
- 高速公路單包工施工合同
- 咨詢公司消防改造協(xié)議
- 鐵路橋梁維修加固粉噴樁施工合同
- 2025年度采購合同標(biāo)的物描述及采購數(shù)量詳細(xì)說明3篇
- 事業(yè)單位職工固定期限勞動(dòng)協(xié)議樣本2024版一
- 臨時(shí)工地建設(shè)協(xié)議2024版版B版
- 通信工程建設(shè)標(biāo)準(zhǔn)強(qiáng)制性條文匯編(2023版)-定額質(zhì)監(jiān)中心
- 2024年棄土堆放合同協(xié)議
- DB11∕T 353-2021 城市道路清掃保潔質(zhì)量與作業(yè)要求
- 中醫(yī)特色科室創(chuàng)建
- 多旋翼無人機(jī)駕駛員執(zhí)照(CAAC)備考試題庫大全-上部分
- Unit 2 同步練習(xí)人教版2024七年級(jí)英語上冊
- JGJ94-2008建筑樁基技術(shù)規(guī)范
- 電子產(chǎn)品模具設(shè)計(jì)
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- 失能老年人的護(hù)理與康復(fù)
- 微信小程序運(yùn)營投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論