試驗(yàn)一順序表操作實(shí)現(xiàn)_第1頁(yè)
試驗(yàn)一順序表操作實(shí)現(xiàn)_第2頁(yè)
試驗(yàn)一順序表操作實(shí)現(xiàn)_第3頁(yè)
試驗(yàn)一順序表操作實(shí)現(xiàn)_第4頁(yè)
試驗(yàn)一順序表操作實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)日期:2017年3月6日實(shí)驗(yàn)?zāi)康募耙?,熟練掌握線性表的基本操作在順序存儲(chǔ)上的實(shí)現(xiàn);2.以線性表的各種操作(建立、插入、刪除、遍歷等)的實(shí)現(xiàn)為重點(diǎn);3,掌握線性表的順序存儲(chǔ)結(jié)構(gòu)的定義和基本操作的實(shí)現(xiàn);4.通過(guò)本實(shí)驗(yàn)加深對(duì) C語(yǔ)言的使用(特別是函數(shù)調(diào)用的參數(shù)傳遞、指針類型的應(yīng)用)實(shí)驗(yàn)內(nèi)容已知程序文件已給出學(xué)生身高信息順序表的類型定義和基本運(yùn)算函數(shù)定義(1)順序表類型定義typedef struct int xh; /*學(xué)號(hào) */float sg; /*身高 */int sex; /* 性別,0為男生,1為女生*/ datatype;typedef structdatatype dataMA

2、X; /*存放順序表元素的數(shù)組*/int last; /*表示data中實(shí)際存放元素個(gè)數(shù)*/Seqlist;(2)基本運(yùn)算函數(shù)原型void initList(Seqlist *lp);/*置一個(gè)空表 */void createList(Seqlist *lp);/*建一個(gè)學(xué)生順序表 */void sort_xh(Seqlist *lp);/*按學(xué)號(hào)排序 */void Error(char *s);/*自定義錯(cuò)誤處理函數(shù)*/void pntList(Seqlist *lp);/*輸出學(xué)生表 */void save(Seqlist *lp,char strname);/*保存學(xué)生順序表到指定文件*

3、/任務(wù)一創(chuàng)建程序文件,其代碼如下所示,理解順序表類型Seqlist和基本運(yùn)算函數(shù) 后回答下列問(wèn)題。/*程序文件代碼*/#include <>#include <>#define MAX 50typedef struct int xh; /*學(xué)號(hào)*/float sg; /*身高*/int sex; /* 性別,0為男生,1為女生*/ datatype;typedef structdatatype dataMAX; /*存放順序表元素的數(shù)組*/int last; /*表示data中實(shí)際存放元素個(gè)數(shù)*/置一個(gè)空表*/建一個(gè)學(xué)生順序表*/Seqlist;void initLis

4、t(Seqlist *lp);/*void createList(Seqlist *lp);/*void sort_xh(Seqlist *lp);/*按學(xué)號(hào)排序 */輸出學(xué)生表*/void Error(char *s);/*自定義錯(cuò)誤處理函數(shù)*/保存學(xué)生順序表到指定文件void pntList(Seqlist *lp);/*void save(Seqlist *lp,char strname);/* */*置一個(gè)空表*/void initList(Seqlist *lp) lp->last=0; /*建一個(gè)學(xué)生順序表*/void createList(Seqlist *lp) FILE

5、 *fp;int xh ,sex;float sg;if(fp=fopen("","r")=NULL) Error("can not open file !");while(!feof(fp) fscanf(fp,"%d%f%d",&xh,&sg,&sex);lp->datalp->last.xh=xh;lp->datalp->last.sg=sg;lp->datalp->last.sex=sex;lp->last+;fclose(fp);)/*按學(xué)

6、號(hào)排升序*/ void sort_xh(Seqlist *lp) int i,j,k;datatype st;for(i=0;i<lp->last-1;i+)k=i;for(j=i+1;j<lp->last;j+)if(lp->dataj.xh<lp->datak.xh )k=j;if(k!=i)st=lp->datak;lp->datak=lp->datai;lp->datai=st;)/*自定義錯(cuò)誤處理函數(shù)*/void Error(char *s) printf("n %s", s);exit(1); /

7、*返回OS,該函數(shù)定義在中*/*輸出學(xué)生順序表*/void pntList(Seqlist *lp) int i;for(i=0;i<lp->last ;i+)printf("%2d:%.2f %dn",lp->data i.xh,lp->datai.sg,lp->datai.sex); /*保存學(xué)生順序表到指定文件*/ void save(Seqlist *lp,char strname) FILE *fp;int i;if(fp=fopen(strname,"w")=NULL) Error("can not o

8、pen file !");for(i=0;i<lp->last ;i+)fprintf(fp,"%2d %5.2f %2dn",lp->datai.xh,lp->datai.sg,lp->da tai.sex);) fclose(fp); )請(qǐng)回答下列問(wèn)題:(1)由順序表類型定義可知,該順序表類型名為 Seqlist ,其中存放的元 素為學(xué)生信息,學(xué)生信息定義的類型名為datatype ,包含 xh 、sg、 sex 三個(gè)成員(寫(xiě)出成員變量名),學(xué)生信息存儲(chǔ)于data 數(shù)組, 順序表的表長(zhǎng)變量為 MAX 0(2)程序編譯連接通過(guò)后能執(zhí)

9、行嗎為什么其代碼的整體結(jié)構(gòu)有哪幾個(gè)組成部分 答:不能。因?yàn)闆](méi)有主函數(shù),程序無(wú)法運(yùn)行。代碼的整體結(jié)構(gòu)的組成部分有:typedef struct datatype;置一個(gè)空表*/按學(xué)號(hào)排序*/建一個(gè)學(xué)生順序表*/typedef struct Seqlist;void initList(Seqlist *lp);/*void sort_xh(Seqlist *lp);/*void createList(Seqlist *lp);/*void Error(char *s);/*自定義錯(cuò)誤處理函數(shù)*/void pntList(Seqlist *lp);/* 輸出學(xué)生表 */void save(Seqli

10、st *lp,char strname);/*保存學(xué)生順序表到指定文件*/(3)回答下列問(wèn)題a) initList 函數(shù)的形參變量lp存放什么值順序表置為空表的實(shí)質(zhì)是做什 么操作答:學(xué)生信息:學(xué)號(hào),身高,性別。順序表的初始化即構(gòu)造一個(gè)空表,這對(duì)表是一個(gè)加工型的運(yùn)算,因此,將 L 設(shè)為指針參數(shù),首先動(dòng)態(tài)分配存儲(chǔ)空間,然后,將表中 last指針置為0,表示 表中沒(méi)有數(shù)據(jù)元素。b)在建立順序表的createList函數(shù)中,順序表的數(shù)據(jù)元素來(lái)自何處根據(jù)已 提供的數(shù)據(jù)建完的順序表表長(zhǎng)是多少答:順序表的數(shù)據(jù)元素來(lái)自文件,順序表表長(zhǎng)是:last oc) sort_xh排序函數(shù)采用了什么排序方法請(qǐng)列舉5個(gè)學(xué)號(hào)

11、值寫(xiě)出每趟(5個(gè)需排4趟)排序后的結(jié)果答:選擇排序。第一次排序1,3,6,4,5第二次排序1,3,6,4,5第三次排序1,3,4,6,5第四次排序1,3,4,5,6d)列舉一個(gè)調(diào)用自定義錯(cuò)誤處理函數(shù) Error的調(diào)用語(yǔ)句,并給出屏幕輸出 結(jié)果can not open file!e) save函數(shù)中的形參數(shù)組strname中存放什么答:存放的是學(xué)生的學(xué)生的信息:學(xué)號(hào),身高,性別。任務(wù)二1 .題目要求創(chuàng)建一個(gè)新的程序文件,請(qǐng)調(diào)用提供的功能函數(shù)(以 #include ”方式導(dǎo) 入函數(shù)庫(kù))及自定義的函數(shù)完成以下操作:創(chuàng)建一個(gè)包含學(xué)生學(xué)號(hào)、身高、性別的學(xué)生身高信息表并輸出到屏幕,學(xué)生信息從文件讀?。粚?duì)已

12、建立的學(xué)生身高信息表按學(xué)號(hào)從小到大排序,并把結(jié)果寫(xiě)入到數(shù)據(jù)文件中();從鍵盤(pán)輸入一位學(xué)生的相關(guān)信息插入到已排序的學(xué)生身高信息表中后仍然保持學(xué)號(hào)的有序性;對(duì)插入后的學(xué)生身高信息表進(jìn)行倒置,結(jié)果輸出在屏幕;從鍵盤(pán)輸入一個(gè)身高值,統(tǒng)計(jì)與該身高相同的學(xué)生個(gè)數(shù)并輸出在屏幕;在程序文件需再定義以下三個(gè)功能函數(shù):(1) void insertX(Seqlist *lp, datatype x)功能:在學(xué)號(hào)從小到大排序的學(xué)生表中插入值為x的學(xué)生仍保持學(xué)號(hào)的有序性(2) void reverse(Seqlist *lp)功能:對(duì)lp指向的順序表進(jìn)行倒置操作(3) int count(Seqlist *lp , float y)功能:統(tǒng)計(jì)學(xué)生表中身高值為y的學(xué)生數(shù)并返回2 .請(qǐng)根據(jù)題目功能要求及程序中的注釋填空完整代碼/*程序文件代碼

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論