《數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)指導(dǎo)與習(xí)題解析(C語言版)》是與《數(shù)據(jù)結(jié)構(gòu)從應(yīng)用到實(shí)現(xiàn)(C語言版)》配套的輔助教材。本書分為兩大部分,第一大部分,和教材中每章對(duì)應(yīng),每章的實(shí)驗(yàn)分“基本實(shí)驗(yàn)練習(xí)”,“自己動(dòng)手做練習(xí)”和“綜合應(yīng)用實(shí)例”3個(gè)部分,力求綜合應(yīng)用課本中的知識(shí),解決實(shí)際生活中的例子;第二大部分,對(duì)教材中的課后習(xí)題進(jìn)行了詳細(xì)解析。
適讀人群 :本書可作為高等院校計(jì)算機(jī)類、電子信息類、自動(dòng)化類、電氣類、光電類及其他相關(guān)專業(yè)學(xué)生的教材和教學(xué)參考書,也可作為工程技術(shù)人員的參考資料和感興趣的讀者的自學(xué)讀物。
本書是與 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》配套的輔助教材。本書分為兩大部分:第一部分為與《數(shù)據(jù)結(jié)構(gòu)(C語言版)》中每章對(duì)應(yīng)的實(shí)驗(yàn)指導(dǎo),其中每章的實(shí)驗(yàn)分為“基本實(shí)驗(yàn)練習(xí)”“自己動(dòng)手做練習(xí)”和“綜合應(yīng)用實(shí)例”三個(gè)部分,力求綜合應(yīng)用課本中的知識(shí),解決實(shí)際生活中的例子;第二部分對(duì)《數(shù)據(jù)結(jié)構(gòu)(C語言版)》書中的課后習(xí)題進(jìn)行了詳細(xì)解析。本書的實(shí)驗(yàn)指導(dǎo)部分,在“基本實(shí)驗(yàn)練習(xí)”環(huán)節(jié)給出了一個(gè)問題的完整實(shí)現(xiàn)算法,學(xué)生可以先通過讀代碼,來理解算法;在“自己動(dòng)手做練習(xí)”環(huán)節(jié)給出了一個(gè)相似的問題,學(xué)生可以借助解決相似問題,來進(jìn)一步理解算法,并且在本部分只給出了程序運(yùn)行的界面圖,即給出了具體要求,但沒有給出代碼,學(xué)生可模仿“基本實(shí)驗(yàn)練習(xí)”中的代碼來實(shí)現(xiàn),進(jìn)行自我練習(xí);在“綜合應(yīng)用實(shí)例”環(huán)節(jié)給出了一個(gè)綜合應(yīng)用的例子,并給出了具體的實(shí)現(xiàn)代碼,學(xué)生可以將本部分知識(shí)進(jìn)行綜合應(yīng)用。
“數(shù)據(jù)結(jié)構(gòu)”課程是高等學(xué)校計(jì)算機(jī)及相關(guān)專業(yè)的一門重要的專業(yè)基礎(chǔ)課程,但很多學(xué)生存在“理論強(qiáng),實(shí)踐弱”的現(xiàn)象,即課堂上所講算法都明白,但自己無法實(shí)現(xiàn)這些算法。
本書的實(shí)驗(yàn)指導(dǎo)部分,在“基本實(shí)驗(yàn)練習(xí)”環(huán)節(jié)給出了一個(gè)問題的完整實(shí)現(xiàn)算法,學(xué)生可以先通過讀代碼,來理解算法;在“自己動(dòng)手做練習(xí)”環(huán)節(jié)給出了一個(gè)相似的問題,學(xué)生可以借助解決相似問題,來進(jìn)一步理解算法,并且在本部分只給出了程序運(yùn)行的界面圖,即給出了具體要求,但沒有給出代碼,學(xué)生可模仿“基本實(shí)驗(yàn)練習(xí)”中的代碼來實(shí)現(xiàn),進(jìn)行自我練習(xí);在“綜合應(yīng)用實(shí)例”環(huán)節(jié)給出了一個(gè)綜合應(yīng)用的例子,并給出了具體的實(shí)現(xiàn)代碼,學(xué)生可以將本部分知識(shí)進(jìn)行綜合應(yīng)用。
本書中所有算法都采用C語言函數(shù)的形式描述,這些函數(shù)中都在關(guān)鍵語句進(jìn)行了詳細(xì)注釋,并已在Visual C++6.0運(yùn)行環(huán)境下調(diào)試運(yùn)行,便于讀者理解算法,并方便讀者對(duì)基本運(yùn)算進(jìn)行驗(yàn)證,從而在此基礎(chǔ)上學(xué)會(huì)應(yīng)用。
本書主編為燕京理工學(xué)院孫麗云和馬睿,副主編為燕京理工學(xué)院李珊和宋麗輝、武漢工程科技學(xué)院徐梅。編寫人員分工為:馬睿編寫了實(shí)驗(yàn)1、實(shí)驗(yàn)8、實(shí)驗(yàn)9,第1章、第6章和第7章的課后習(xí)題解析;宋麗輝編寫了實(shí)驗(yàn)2并完成了統(tǒng)稿工作;孫麗云編寫了實(shí)驗(yàn)3、實(shí)驗(yàn)4、實(shí)驗(yàn)5、實(shí)驗(yàn)7、實(shí)驗(yàn)10、綜合實(shí)驗(yàn)1、綜合實(shí)驗(yàn)2,第2章、第3章的課后習(xí)題解析,并進(jìn)行了統(tǒng)稿;李珊編寫了實(shí)驗(yàn)6和第4章的課后習(xí)題解析;邵蘭潔編寫了第5章的課后習(xí)題解析;徐梅編寫了第8章的課后習(xí)題解析和自測(cè)練習(xí)題。課題組成員劉淑艷、劉佩賢、王慧、牛玉玲等提供了大量的編寫素材。
本書在編寫過程中得到了燕京理工學(xué)院信息科學(xué)與技術(shù)學(xué)院各位領(lǐng)導(dǎo)的指導(dǎo)和幫助,同時(shí)得到了華中科技大學(xué)出版社的大力支持,在此一并表示感謝。
為了方便教學(xué),本書還配有電子課件等教學(xué)資源包,任課教師和學(xué)生可以登錄“我們愛讀書”網(wǎng)(www.ibook4us.com)免費(fèi)注冊(cè)并瀏覽,或者發(fā)郵件至hustpeiit@163.com免費(fèi)索取。
由于作者水平有限,書中難免有錯(cuò)誤及疏漏之處,懇請(qǐng)同行專家及讀者指正,以便進(jìn)一步提高本書質(zhì)量。
編者2016年12月
實(shí)驗(yàn)1結(jié)構(gòu)體基本練習(xí)實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)2順序表實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)3單鏈表實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)4棧實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)5隊(duì)列實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)6串實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
五、 注意事項(xiàng)及小結(jié)()
實(shí)驗(yàn)7二叉樹實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)8圖實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)9查找實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
實(shí)驗(yàn)10排序?qū)嶒?yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 基本實(shí)驗(yàn)練習(xí)()
三、 自己動(dòng)手做練習(xí)()
四、 綜合應(yīng)用實(shí)例()
綜合實(shí)驗(yàn)1線性結(jié)構(gòu)綜合性實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 實(shí)驗(yàn)要求()
三、 詳細(xì)實(shí)驗(yàn)步驟要求()
四、 提交作業(yè)要求()
綜合實(shí)驗(yàn)2樹形結(jié)構(gòu)綜合性實(shí)驗(yàn)()
一、 實(shí)驗(yàn)?zāi)康?)
二、 實(shí)驗(yàn)要求()
三、 詳細(xì)實(shí)驗(yàn)步驟要求()
四、 提交作業(yè)要求()
第1章課后習(xí)題解析()
第2章課后習(xí)題解析()
第3章課后習(xí)題解析()
第4章課后習(xí)題解析()
第5章課后習(xí)題解析()
第6章課后習(xí)題解析()
第7章課后習(xí)題解析()
第8章課后習(xí)題解析()
自測(cè)練習(xí)題()
參考文獻(xiàn)()
實(shí)驗(yàn)1結(jié)構(gòu)體基本練習(xí)實(shí)驗(yàn) 實(shí)驗(yàn)1 結(jié)構(gòu)體基本練習(xí)實(shí)驗(yàn)
一、 實(shí)驗(yàn)?zāi)康? 掌握結(jié)構(gòu)體類型變量的定義和使用。
二、 基本實(shí)驗(yàn)練習(xí) 有n個(gè)學(xué)生的信息(包括學(xué)號(hào)、姓名、成績(jī)),要求用鍵盤輸入上述各項(xiàng)數(shù)據(jù),按照成績(jī)從低到高的順序輸出各學(xué)生的信息。 1. 定義一個(gè)結(jié)構(gòu)體類型 typedef struct student { int no; /*學(xué)號(hào)*/ char name\[20\];/*姓名*/ double score;/*成績(jī)*/ }STU; 2. 創(chuàng)建結(jié)構(gòu)體數(shù)組 分析 為將創(chuàng)建好的結(jié)構(gòu)體數(shù)組帶回到主調(diào)函數(shù),這里使用數(shù)組名作為形式參數(shù)。 void CreateStu(STU s\[\],int n) { int i; for(i=0;i { printf("請(qǐng)輸入第%d個(gè)同學(xué)的學(xué)號(hào):\\n",i+1); scanf("%d",&s\[i\].no); printf("請(qǐng)輸入第%d個(gè)同學(xué)的姓名:\\n",i+1); scanf("%s",s\[i\].name); printf("請(qǐng)輸入第%d個(gè)同學(xué)的成績(jī):\\n",i+1); scanf("%lf",&s\[i\].score); } } 3. 對(duì)結(jié)構(gòu)體數(shù)組排序 分析這里采用冒泡排序?qū)Y(jié)構(gòu)體數(shù)組進(jìn)行排序,flag是數(shù)組元素交換的標(biāo)志位,當(dāng)一趟排序未出現(xiàn)兩兩元素交換則結(jié)束排序。 void SortStu(STU s\[\],int n) { int i,j,flag; STU t; for(i=0;i { flag=1; for(j=0;j if(s\[j+1\].score { flag=0; t=s\[j\]; s\[j\]=s\[j+1\]; s\[j+1\]=t; } if(flag) return; } } 4. 輸出結(jié)構(gòu)體數(shù)組 void PrintStu(STU s\[\],int n) { int i; printf("學(xué)號(hào)姓名 成績(jī)\\n"); for(i=0;i { printf("%6d%9s%10.1lf\\n",s\[i\].no,s\[i\].name,s\[i\].score); } }
三、 自己動(dòng)手做練習(xí) 在上述建立的學(xué)生信息結(jié)構(gòu)體數(shù)組中,編寫一個(gè)函數(shù)int SearchStu(STU s\[\],int n,int no)來實(shí)現(xiàn)在長(zhǎng)度為n的學(xué)生信息結(jié)構(gòu)體數(shù)組s中查找學(xué)號(hào)為no的學(xué)生,若找到了,輸出查找到學(xué)生的完整信息,并返回學(xué)生所在的數(shù)組下標(biāo);否則,提示查找失敗,返回-1。實(shí)現(xiàn)后的程序運(yùn)行界面如圖11所示。 圖11實(shí)驗(yàn)1練習(xí)運(yùn)行界面
四、 綜合應(yīng)用實(shí)例