一、 實驗目的:
- 掌握單鏈表的概念和建立方法。
- 掌握單鏈表的幾種基本操作。
二、實驗要求:
【根據下面提供的結構,參照教材“9.5 單鏈表”中所給出的單鏈表幾種基本操作的代碼,完成實現“學生成績信息”相關的幾種功能函數】
有一學生成績表,輸入信息包括學號、姓名、3門課程成績。結構定義爲(可以自行添加別名):
要求實現:
*1. 單鏈表的創建
函數聲明: void CreateStuList( struct stud head ) ;
說明:創建“學生成績信息”的單鏈表,並在創建時完成一些學生結點的構建和鏈接。
輸入輸出示例(如下圖所示):
2. 單鏈表的遍歷
*函數聲明: void PrintStuList( struct stud head ) ;
說明:順序輸出顯示單鏈表中所有結點的信息,每個結點信息佔一行。
*3.單鏈表的結點插入函數聲明: void StuListInsert( struct stud head) ;
說明:(1)若單鏈表中已存在相同學號的結點,則返回“error!”提示
(2)在已經有序的“學生成績信息”單鏈表中添加新結點,結點插入後,保持鏈表的有序性。
(3)待插入結點的信息在本函數中接收。
提示:輸入輸出示例(如下圖所示,需要從幾個方面討論和考慮問題):
【情況1】若待添加結點與單鏈表中已存在學號有重複的,則反饋提示信息,鏈表中結構不變;
【情況2】對鏈表添加結點。提醒注意,在鏈表中添加和在鏈表尾添加,是需要分別對待處理的。
4.單鏈表的使用
函數: main()
說明:在理解了單鏈表各種基本操作的基礎上,嘗試把這些操作組合到一起,共同實現單鏈表的應用。
對於之前定義的基本操作,在主函數中分別調用,實現單鏈表的應用。
[擴展&選做]5.單鏈表的結點刪除
*函數聲明: void StuListDelete( struct stud head )
說明:
(1)刪除指定學號的鏈表結點。
(2)若單鏈表中未找到該學號的結點,則返回“error!”提示。
(3)若找到該學號的結點,則刪除該結點。提示:輸入輸出示例(如下圖所示,需要從幾個方面討論和考慮問題):
【情況1】若鏈表中確實存在待刪除結點,則刪除它。提醒注意,結點處於在鏈表中和鏈表尾,是需要分別對待處理的。
【情況2】若鏈表中不存在待刪除結點,則需要反饋提示信息。
[擴展&選做]
6.統計——有不及格成績的學生名單
*函數聲明: void StaticScoreList( struct stud head ) ;
說明:統計單鏈表中各結點,有成績不及格的學生名單,並顯示輸出,一個名字佔一行。
輸入輸出示例(如下圖所示,需要從幾個方面討論和考慮問題):
三,實驗結果
代碼在這裏粘貼不了,我放在下篇了。