




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+實(shí)驗(yàn)報告:鏈表應(yīng)用鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)班級:* 學(xué)號: * 姓名: *鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)一、實(shí)驗(yàn)內(nèi)容定義一個鏈表,其中的數(shù)組元素為結(jié)構(gòu)體成員,結(jié)構(gòu)體中的學(xué)生信息有學(xué)號、姓名、身高,還有用于存放下一結(jié)點(diǎn)的結(jié)構(gòu)體指針。然后定義在其上操作的函數(shù), 有在首部插入結(jié)點(diǎn)、在尾部插入結(jié)點(diǎn)、在某一個結(jié)點(diǎn)前插入結(jié)點(diǎn)、刪除指定的結(jié) 點(diǎn)、刪除全部結(jié)點(diǎn)、修改指定結(jié)點(diǎn)的數(shù)據(jù)部分、顯示全部結(jié)點(diǎn)信息、按照結(jié)構(gòu)體結(jié) 點(diǎn)中某一個數(shù)據(jù)項(xiàng)對鏈表進(jìn)行排序。從主函數(shù)開始執(zhí)行,輸入數(shù)據(jù),選擇執(zhí)行操作 的類型,進(jìn)入到各個函數(shù)中執(zhí)行相應(yīng)的操作,執(zhí)行完畢后,返回主函數(shù),結(jié)束程序 的運(yùn)行。二、功能模塊簡介主函數(shù):程序開始運(yùn)
2、行后, 由主函數(shù)定義頭結(jié)點(diǎn)StuLst 1st,將結(jié)點(diǎn)的next域置為NULLo然后,顯示指示用戶進(jìn)行輸入的信息,供用戶進(jìn)行閱讀了解,然后進(jìn)行輸入 操作。對各個模塊進(jìn)行簡介:0.結(jié)束程序:在主界面輸入0,退出正在運(yùn)行的程序。1.顯示所有節(jié)點(diǎn)信息:在主界面輸入1,調(diào)用函數(shù)ShowLst(StuLst* 1st)進(jìn)行顯示結(jié)點(diǎn)信息操作。如 果鏈表不為空,則顯示所有結(jié)點(diǎn)的信息。先設(shè)置輸出信息格式,輸出表頭信息,定 義指針*p=lst-next;用while循環(huán),每次使p=p-next;如果p不為空則輸出顯示 該節(jié)點(diǎn)的數(shù)據(jù)信息,然后依次顯示每個節(jié)點(diǎn)的數(shù)據(jù)信息。2.插入節(jié)點(diǎn)到頭部:在主界面輸入2,調(diào)用函數(shù)
3、InsertToFirst (StuLst* 1st)插入結(jié)點(diǎn)到鏈表的頭 部。定義結(jié)構(gòu)體指針并為它分配一個地址空間StE pStnew Stu;用來接收用戶輸 入的信息,屏幕上顯示出提示信息,請用戶輸入信息,如果輸入的學(xué)號信息不為0,則在執(zhí)行完這一次輸入后,繼續(xù)執(zhí)行下一次輸入。輸入完畢后,將該結(jié)構(gòu)體 指針插入到鏈表的頭部去:pSt-next=lstnext;1st-next二pSt。3.插入節(jié)點(diǎn)到尾部:在主界面輸入3,調(diào)用函數(shù)InsertToLast(StuLst* 1st)插入結(jié)點(diǎn)到鏈表的尾 部。定義結(jié)構(gòu)體指針并為它分配一個地址空間Stu* pSt二new Stu;用來接收用戶輸 入的信息,
4、屏幕上顯示出提示信息,請用戶輸入信息。輸入完畢后,調(diào)用函數(shù)GetTail(lst)返回鏈表的尾部指針, 將該結(jié)構(gòu)體指針插入到鏈表的尾部 去:GetTail(1st)-next二pSt;pSt-next二NULL。4.插入節(jié)點(diǎn)到某個節(jié)點(diǎn)之前:在主界面輸入4,調(diào)用函數(shù)InsertBefore(StuLst* 1st)插入結(jié)點(diǎn)到某個指定 結(jié)點(diǎn)之前。定義整型變量用于接收用戶輸入的要插入的位置int nMark;定義結(jié)構(gòu) 體指針并為它分配一個地址空間Stu* pSt二new Stu;用來接收用戶輸入的信息,屏 幕上顯示出提示信息,請用戶輸入信息。輸入完畢后,定義結(jié)構(gòu)體指針指向頭結(jié) 點(diǎn):Stu *p=ls
5、t;用while循環(huán)遍歷整個鏈表,每次使p=p-next;如果p-next不 為空, 繼續(xù)下一次循環(huán)。 如果找到第nMark個結(jié)點(diǎn),將該鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)結(jié)構(gòu)體變量插入到該結(jié)點(diǎn)前面去pSt-next=p-next; p-next=pSt;退出循環(huán)。5.修改某個節(jié)點(diǎn)的數(shù)據(jù)部分:在主界面輸入5,調(diào)用函數(shù)Modify (StuLst* 1st)修改某個指定的結(jié)點(diǎn)的數(shù)據(jù) 部分。定義學(xué)號字符數(shù)組用于接收用于輸入的要修改的結(jié)點(diǎn)的學(xué)號信息:char idID_LEN;定義姓名字符數(shù)組,用于接收用戶輸入的新的姓名:char nameNAME_LEN;定義整型變量,用于接收用戶輸入的新的身高:int
6、nHeight;在用 戶輸入信息完畢后,定義結(jié)構(gòu)體指針指向頭結(jié)點(diǎn)的下一個結(jié)點(diǎn):Stu *p=lst-next;用while循環(huán)遍歷整個鏈表,如果p不為空,每次使p=p-next;如果找到學(xué)號與 輸入的學(xué)號相同的結(jié)點(diǎn),用輸入的新的數(shù)據(jù)替換該結(jié)點(diǎn)原有的信息,如果輸入的姓 名不為空,則將執(zhí)行替換,否則不執(zhí)行,替換完成后,退出循環(huán)。6.刪除某個節(jié)點(diǎn):在主界面輸入6,調(diào)用函數(shù)DeleteByld(StuLst* 1st)刪除指定結(jié)點(diǎn)。定義學(xué) 號字符數(shù)組,在用戶輸入信息完畢后,用于接收用戶輸入的要刪除的結(jié)點(diǎn)的學(xué)號信息:ch吐idID_LENo定義結(jié)構(gòu)體指針指向頭結(jié)點(diǎn):Stu *p=lst;使用while循
7、環(huán)遍歷整個鏈表,如果p-next不為空,使p=p-next;如果找出學(xué)號信息與所輸入的學(xué)號信息相符的結(jié) 點(diǎn),將其刪除,并釋放它所占用的存儲空間:Stu* q二p-next;p-next二q- next;delete q;執(zhí)行刪除完畢后,推出循環(huán)。7.刪除全部節(jié)點(diǎn):在主界面輸入7,調(diào)用函數(shù)DeleteAll (StuLst* 1st)刪除全部結(jié)點(diǎn)。定義結(jié)構(gòu) 體指針指向頭結(jié)點(diǎn):Stu *p=lst;使用while循環(huán)遍歷整個鏈表, 如果p-next不為 空, 使p=p_next;刪除每一個結(jié)點(diǎn)Stu* q=pnext;pnext=q-next; delete q;清空鏈表完成后,退出循環(huán)。8.對節(jié)
8、點(diǎn)進(jìn)行排序:在主界面輸入8,調(diào)用函數(shù)ShowByHeight (StuLst* 1st)對鏈表按結(jié)點(diǎn)中的身高信息進(jìn)行排序。定義一個整型變量用來保存鏈表的長度:intnLength二Length (1st);定義結(jié)構(gòu)體指針指向頭結(jié)點(diǎn):Stu* p二1st;定義兩個字符數(shù)組 用來交換兩個結(jié)點(diǎn)中的學(xué)號和姓名數(shù)據(jù):char tempi ID_LEN, temp2NAME_LEN;定 義一個整型變量用來交換兩個結(jié)點(diǎn)中的身高數(shù)據(jù):int temp3;使用兩個for循環(huán)遍 歷整個鏈表,依次比較每個結(jié)點(diǎn)的身高大小, 如果某一個結(jié)點(diǎn)的身高大于該結(jié)點(diǎn)的 下一個結(jié)點(diǎn)的身高,則將兩個結(jié)點(diǎn)的信息進(jìn)行交換。排序完成后,調(diào)
9、用函數(shù)ShowLst (1st)對排丿芋后的鏈表進(jìn)行輸出顯示。三、程序代碼#include #include #include 定義學(xué)號字符數(shù)組的長度#define ID_LEN 10定義姓名字符數(shù)組的長度define NAME_LEN 20struct Stu/定義結(jié)點(diǎn)結(jié)構(gòu)體/存放學(xué)生的學(xué)號信息char idID_LEN;鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)/存放學(xué)生的姓名信息char nameNAME_LEN;/存放學(xué)生的身高信息int nHeight:/存放下一結(jié)點(diǎn)的地址Stu* next;typedef Stu StuLst;/刪除某個節(jié)點(diǎn)void DeleteByld(StuLst* 1st
10、)如果鏈表為空,返回調(diào)用函數(shù)辻(!lst)return;/定義學(xué)號字符數(shù)組,用于接收用戶輸入的要刪除的結(jié)點(diǎn)的學(xué)號信息char idID_LEN;while (1)cout,z請輸入要刪除的節(jié)點(diǎn)的學(xué)號:,zendl;cinid;辻(id二二NULL)cout,/學(xué)號不能為空!,endl;elsebreak;Stu* p=lst;while(p-next)if(strcmp(p-nextid, id)=0)Stu* q=p-next:p-next=q-next;delete q;break;p二p-next;鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)/刪除全部節(jié)點(diǎn)void DeleteAll(StuLst* 1
11、st) 如果鏈表為空,則返回調(diào)用函數(shù)辻(!lst)return;Stu* p=lst;/p的下一結(jié)點(diǎn)不為空則執(zhí)行循環(huán)while(pnext)Stu* q=p-next;p-next=q-next;delete q;修改某個節(jié)點(diǎn)的數(shù)據(jù)部分void Modify(StuLst* 1st) if(!lst)return;/定義學(xué)號字符數(shù)組,用于接收用于輸入的要修改的結(jié)點(diǎn)的學(xué)號信息charidID_LEN;/定義姓名字符數(shù)組,用于接收用戶輸入的要修改的結(jié)點(diǎn)的新姓名char nameNAME_LEN;定義整型變量,用于接收用戶輸入的要修改的結(jié)點(diǎn)的新身高int nHeight;輸入信息while (1)c
12、out,z請輸入要修改的節(jié)點(diǎn)的學(xué)號:,id, id)=O)p-nHe i ght=nHe i ght;if (name)strcpy (p-name, name);p=p-next;將指針指向尾節(jié)點(diǎn)Stu* GetTail(StuLst* 1st)辻(!lst)return NULL;Stu* p=lst;while(p-next)p=p-next;return p;計算鏈表的長度int Length(StuLst* 1st) 辻(!lst)return 0;int nLength二0;Stu* p=lst;while(pnext)nLength+;p=p-next;return nLengt
13、h; 鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)輸入所有節(jié)點(diǎn)信息void ShowLst(StuLst* 1st) 驗(yàn)證鏈表是否為空鏈表if(!lst)return;Stu* p二1st-next;/設(shè)置輸出行:左對齊cout setf(ios:left):/設(shè)置輸出字符串占用的寬度:10 cout. width (10); coutz,學(xué)號cout. width (16);cout,/姓名”;cout. width (4);cout,z身高,endl;cout,/-,endl;判斷P節(jié)點(diǎn)是否為空while(p)cout. width(10);輸入學(xué)號coutp-id;cout. width (16);如果
14、姓名不為空,輸出姓名,否則輸出空字符串cout(p-name?p-name:”);cout. width(4);輸出身高,并換行coutp-nHeightendl;轉(zhuǎn)到下一個節(jié)點(diǎn)p二p-next;插入節(jié)點(diǎn)到頭部void InsertToFirst(StuLst* 1st)/驗(yàn)證數(shù)據(jù)是否合法辻(lst=NULL)return;構(gòu)造新節(jié)點(diǎn)Stu* pSt=new Stu;鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)/給新節(jié)點(diǎn)賦值while(1) system(cis);cout,?請輸入學(xué)號:endl;/輸入節(jié)點(diǎn)信息cin (pSt-id);辻(strcmp (pStid, 0)=0)break;cout,/姓名
15、:,endl;cin (pSt-name);coutz,身高:,endl;cin (pSt-nHeight);插入到鏈表笫一個位置=lstnext; pStnext lst-next=pSt;插入節(jié)點(diǎn)到尾部void InsertToLast(StuLst* 1st)驗(yàn)證數(shù)據(jù)是否合法if(lst=NULL)return;構(gòu)造新節(jié)點(diǎn)Stu* pSt二new Stu;/給新節(jié)點(diǎn)賦值while(1) cout,?請輸入學(xué)號:endl;/輸入節(jié)點(diǎn)信息cin (pSt-id);cout,?姓名:*endl;cin (pStname);cout,/身高:,endl;cin (pSt-nHeight);if(
16、pStid)break;elsecout,/學(xué)號不能為空!,endl;鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng) 插入到尾部GetTail(1st)一next二pSt;pSt-next二NULL;在某個節(jié)點(diǎn)之前插入節(jié)點(diǎn)void InsertBefore(StuLst* 1st)驗(yàn)證數(shù)據(jù)是否合法if (lst=NULL)return;構(gòu)造新節(jié)點(diǎn)Stu* pSt=new Stu;定義要插入位置的標(biāo)記int nMark:/給新節(jié)點(diǎn)賦值while(1) cout,/請輸入學(xué)號:,endl;/輸入節(jié)點(diǎn)信息cin (pSt-id);coutz/姓名:,endl;cin (pStname);coutz/身高:z,endl
17、;cin (pStnHeight);cout,z輸入要插入的位置(在第兒個節(jié)點(diǎn)之前):,zendl;cinnMark;if(pSt-id)break;elsecout,/學(xué)號不能為空!z,endl;Stu *p二1st;int i二0;while(p-next)i+;if (inMark)pSt-next二p-next;p-next二pSt;鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)break;p二p-next;按身高對鏈表進(jìn)行排序void ShowByHeight(StuLst* 1st) 如果鏈表為空,返回調(diào)用函數(shù)辻(!lst)return;/求鏈表的長度int nLength二Length (1st)
18、;定義新的指針,指向頭結(jié)點(diǎn)/Stu* p=lst;定義存放臨時信息的字符數(shù)組char tempiID_LEN, temP2NAME_LEN;int temp3, i, j;/遍歷整個鏈表,依次比較每個結(jié)點(diǎn)的身高大小for(iO;inext;for(j二0;jnHeight)(p-next-nHeight)strcpy (tempi, p-id);strcpy (p-id, p-next-id);strcpy (p-next-id, tempi);strcpy (temp2, p-name);strcpy(p-name, p-next-name);strcpy (p-next-name, tem
19、p2);temp3=p-nHe i ght;p-nHe i ght=p-next-nHe i ght;p-next-nHeight=temp3;p=p-next;/對鏈表進(jìn)行排序后,輸出顯示所有結(jié)點(diǎn)信息ShowLst (1st);鏈表應(yīng)用一一學(xué)生信息管理系統(tǒng)void main()定義頭結(jié)點(diǎn)StuLst 1st;使頭結(jié)點(diǎn)的next指針域?yàn)镹ULL1st next二NULL;int m;while (1)system(cis);cout,l.顯示所有節(jié)點(diǎn)信息rendl;coutz/2.插入節(jié)點(diǎn)到頭部;,zendl;cout3.插入節(jié)點(diǎn)到尾部;,zendl;cout4.插入節(jié)點(diǎn)到某個節(jié)點(diǎn)之前;endl;coutz/5.修改某個節(jié)點(diǎn)的數(shù)據(jù)部分;,endl;co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025新疆果業(yè)集團(tuán)有限公司招聘36人筆試參考題庫附帶答案詳解
- 與成功有約說課
- 2024福建西海岸建筑設(shè)計院有限公司下半年招聘26人筆試參考題庫附帶答案詳解
- 沼氣用戶安全培訓(xùn)
- 2025商業(yè)地產(chǎn)蛇年新春復(fù)古年貨節(jié)(小巷里的年味記憶主題)活動策劃方案-62正式版
- 項(xiàng)目實(shí)施效果管理協(xié)議書(2篇)
- 2025年回轉(zhuǎn)換熱干燥技術(shù)與設(shè)備項(xiàng)目發(fā)展計劃
- 2025至2031年中國塑鋼執(zhí)手行業(yè)投資前景及策略咨詢研究報告
- 基于化學(xué)核心素養(yǎng)試題的開發(fā)研究
- 2025至2031年中國PET吸塑包裝盒行業(yè)投資前景及策略咨詢研究報告
- 【橡膠工藝】-橡膠履帶規(guī)格
- 小學(xué)勞動技術(shù)云教三年級下冊植物栽培種植小蔥(省一等獎)
- 2020年環(huán)境法律法規(guī)及其它要求清單
- 綜采工作面主要設(shè)備選型設(shè)計方案
- 籍貫對照表完整版
- 2023屆高考模擬作文“完美與缺陷”導(dǎo)寫及范文
- GB/T 7251.3-2017低壓成套開關(guān)設(shè)備和控制設(shè)備第3部分:由一般人員操作的配電板(DBO)
- GB/T 22576.7-2021醫(yī)學(xué)實(shí)驗(yàn)室質(zhì)量和能力的要求第7部分:輸血醫(yī)學(xué)領(lǐng)域的要求
- GB/T 16475-2008變形鋁及鋁合金狀態(tài)代號
- 2023年江蘇省中學(xué)生生物奧林匹克競賽試題及答案
- 領(lǐng)導(dǎo)干部應(yīng)對新媒體時代
評論
0/150
提交評論