




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)學(xué)與計(jì)算科學(xué)學(xué)院實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)項(xiàng)目名稱 線性表的順序表示和實(shí)現(xiàn)所屬課程名稱 數(shù)據(jù)結(jié)構(gòu) 實(shí) 驗(yàn) 類 型 驗(yàn)證型 實(shí) 驗(yàn) 日 期 2013.10.17 班 級(jí) 信計(jì)1201 學(xué) 號(hào) 201253100109 姓 名 成 績 一、實(shí)驗(yàn)概述:【實(shí)驗(yàn)?zāi)康摹恳弧⒘私饩€性表的邏輯結(jié)構(gòu)特征:總存在第一個(gè)和最后一個(gè)元素;除第一個(gè)元素以外,每個(gè)元素總存在唯一一個(gè)直接前驅(qū)元素;除最后一個(gè)元素以外,每個(gè)元素總有唯一一個(gè)直接后繼元素。二、掌握線性表的基本操作在順序存儲(chǔ)結(jié)構(gòu)上的實(shí)現(xiàn)【實(shí)驗(yàn)原理】1、順序表的特點(diǎn):邏輯上相鄰物理上相鄰;是一種隨機(jī)存儲(chǔ)結(jié)構(gòu),其存儲(chǔ)位置可以用一個(gè)簡單、直觀的公式表示。2、線性表的動(dòng)態(tài)分配順
2、序存儲(chǔ)結(jié)構(gòu):#define LIST_INIT_SIZE 6 /線性表存儲(chǔ)空間的初始分配量#define LISTINCREMENT 2 /線性表存儲(chǔ)空間的分配增量Typedef structElemTYpe *elem; /存儲(chǔ)空間基址Int length; /當(dāng)前長度Int listsize; /當(dāng)前分配的存儲(chǔ)容量SqList;【實(shí)驗(yàn)環(huán)境】VC + 6.0二、實(shí)驗(yàn)內(nèi)容:【實(shí)驗(yàn)方案】編寫主函數(shù),調(diào)用順序表的初始化建空表、插入和刪除算法,調(diào)制運(yùn)行,得出結(jié)果?!緦?shí)驗(yàn)過程】(實(shí)驗(yàn)步驟、記錄、數(shù)據(jù)、分析)1、輸入順序表的初始化建空表、插入、刪除算法以及主函數(shù):/線性表的動(dòng)態(tài)分配順序存儲(chǔ)結(jié)構(gòu)#defi
3、ne LIST_INIT_SIZE 6/線性表存儲(chǔ)空間的初始分配量#define LISTINCREMENT 2/線性表存儲(chǔ)空間的分配增量typedef structElemType *elem;/存儲(chǔ)空間基址int length;/當(dāng)前長度int listsize;/當(dāng)前分配的存儲(chǔ)容量SqList;Status InitList_Sq(SqList &L)/構(gòu)造一個(gè)空的線性表L。/ InitList_SqStatus ListInsert_Sq(SqList &L,int i,ElemType e)/在順序線性表L中第i個(gè)位置之前插入新的元素e/ ListInsert_SqS
4、tatus ListDelete_Sq(SqList &L,int i,ElemType &e)/在線性順序表L中刪除第i個(gè)元素,并用e返回其值/ ListDelete_Sqvoid main()SqList L;int i; InitList_Sq(L); for(i=0;i<List_INIT_SIZE,i+)scanf("%d",&L.elemi);L.length+;for(i=0;i<L.length;i+)printf("%d ",L.elemi); printf("n"); ElemT
5、ype e; scanf("%d%d",&i,&e); ListInsert_Sq(L,i,e);for(i=0;i<L.length;i+)printf("%d",L.elemi);printf("n"); scanf("%d",&i); ListDelete_Sq(L,i,e); for(i=0;i<L.length;i+)printf("%d ",L.elem(i);2、調(diào)試:發(fā)現(xiàn)在下列代碼中出現(xiàn)錯(cuò)誤:Status ListInsert_Sq(SqLis
6、t &L,int i,ElemType e)ListLength_Sq(L)+1if(i<1|i>L.length+1)return ERROR; if(L.length>=L.listsize) newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW); L.elem=newbase; L.listsize +=LISTINCREMENT;q=&(L.elemi-1); for(p=&(L.elem
7、L.length-1);p>=q;-p) *(p+1)=*p; *q=e; +L.length; return OK;/ ListInsert_Sq出現(xiàn)的錯(cuò)誤為:error C2065: 'newbase' : undeclared identifier error C2065: 'q' : undeclared identifier error C2065: 'p' : undeclared identifier即newbase,q,p無定義,需要在Status ListInsert_Sq(SqList &L,int i,Elem
8、Type e) 給它們進(jìn)行定義為int *newbase;int *q;int *p;修改之后,繼續(xù)進(jìn)行調(diào)試,發(fā)現(xiàn)出現(xiàn)的錯(cuò)誤跟上述錯(cuò)誤類似,在使用它們之前忘記定義,修改的方法就是在前面給它們先定義后使用。另外,在調(diào)試過程中,還有一些小錯(cuò)誤,如:在for循環(huán)語句中,少了一個(gè)“)”及“;”等,依次修改過來。3.保存,運(yùn)行:在運(yùn)行框中依次輸入隨意六個(gè)數(shù)字,每個(gè)數(shù)字間用空格分開,按回車,則實(shí)現(xiàn)了順序表的建立;再輸入兩個(gè)數(shù)字,數(shù)字用空格隔開,前一數(shù)字(應(yīng)不大于六)表示在第幾個(gè)元素前插入,后一個(gè)數(shù)字表示插入的元素,按回車,由此實(shí)現(xiàn)了順序表的插入算法;再輸入一個(gè)數(shù)字(應(yīng)不大于七)表示把第幾個(gè)元素刪除,再回車
9、,則實(shí)現(xiàn)了順序表的刪除算法,最終,完成了運(yùn)行?!緦?shí)驗(yàn)結(jié)論】(結(jié)果)【實(shí)驗(yàn)小結(jié)】(收獲體會(huì))在此次上機(jī)操作中,編寫主函數(shù)和相關(guān)算法完成線性表的順序表示和實(shí)現(xiàn),慢慢地學(xué)會(huì)一些基本的調(diào)試,也加深了順序表的創(chuàng)建,插入,刪除算法的理解。三、指導(dǎo)教師評(píng)語及成績:評(píng) 語評(píng)語等級(jí)優(yōu)良中及格不及格1.實(shí)驗(yàn)報(bào)告按時(shí)完成,字跡清楚,文字?jǐn)⑹隽鲿?邏輯性強(qiáng)2.實(shí)驗(yàn)方案設(shè)計(jì)合理3.實(shí)驗(yàn)過程(實(shí)驗(yàn)步驟詳細(xì),記錄完整,數(shù)據(jù)合理,分析透徹)4實(shí)驗(yàn)結(jié)論正確. 成 績: 指導(dǎo)教師簽名: 批閱日期:附錄1:源 程 序#include<stdio.h>#include<stdlib.h>#define TUR
10、E 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;#define LIST_INIT_SIZE 6#define LISTINCREMENT 2typedef structElemType *elem;int length;int listsize;SqList;Status InitList_Sq(SqList &L)/構(gòu)造一個(gè)空的線性表L。L.elem=(ElemType *)mall
11、oc(LIST_INIT_SIZE*sizeof(ElemType);if(! L.elem)exit(OVERFLOW); /存儲(chǔ)分配失敗L.length=0; /空表長度為0L.listsize=LIST_INIT_SIZE; /初始存儲(chǔ)容量return OK;/ InitList_SqStatus ListInsert_Sq(SqList &L,int i,ElemType e)/在順序線性表L中第i個(gè)位置之前插入新的元素e,/i的合法值為1iListLength_Sq(L)+1int *newbase;int *p;int *q;if(i<1|i>L.length+
12、1) return ERROR; /i值不合法if(L.length>=L.listsize) /當(dāng)前存儲(chǔ)空間已滿,增加分配newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW); /存儲(chǔ)分配失敗L.elem=newbase; /新基址L.listsize +=LISTINCREMENT; /增加存儲(chǔ)容量q=&(L.elemi-1); /q為插入位置for(p=&(L.elemL.length-1);p>=q;-
13、p) *(p+1)=*p;/插入位置及之后的元素右移*q=e; /插入e+L.length; /表長增1return OK;/ ListInsert_SqStatus ListDelete_Sq(SqList &L,int i,ElemType &e)/在線性順序表L中刪除第i個(gè)元素,并用e返回其值/i的合法值為1iListLength_Sq(L)int *p;int *q;if(i<1|i>L.length+1)return ERROR; /i值不合法p=&(L.elemi-1); /p為被刪除元素的位置e=*p; /被刪除元素的值賦給eq=L.elem+
14、L.length-1; /表尾元素的位置for(+p;p<=q;+p)*(p-1)=*p; /被刪除元素之后的元素左移-L.length; /表長減1return OK;/ ListDelete_Sqvoid main()SqList L;int i;InitList_Sq(L);for(i=0;i<LIST_INIT_SIZE;i+)scanf("%d",&L.elemi);L.length+;for(i=0;i<L.length;i+)printf("%d ",L.elemi);printf("n");E
15、lemType e;scanf("%d%d",&i,&e);ListInsert_Sq(L,i,e);for(i=0;i<L.length;i+)printf("%d",L.elemi);printf("n");scanf("%d",&i);ListDelete_Sq(L,i,e);for(i=0;i<L.length;i+)printf("%d ",*(L.elem+i);printf("n");附錄2:實(shí)驗(yàn)報(bào)告填寫說明 1實(shí)驗(yàn)項(xiàng)目名稱:要求與實(shí)驗(yàn)教學(xué)大綱一致。2實(shí)驗(yàn)?zāi)康模耗康囊鞔_,要抓住重點(diǎn),符合實(shí)驗(yàn)教學(xué)大綱要求。3實(shí)驗(yàn)原理:簡要說明本實(shí)驗(yàn)項(xiàng)目所涉及的理論知識(shí)。4實(shí)驗(yàn)環(huán)境:實(shí)驗(yàn)用的軟、硬件環(huán)境。5實(shí)驗(yàn)方案(思路、步驟和方法等):這是實(shí)驗(yàn)報(bào)告極其重要的內(nèi)容。概括整個(gè)實(shí)驗(yàn)過程。對(duì)于驗(yàn)證性實(shí)驗(yàn),要寫明依據(jù)何種原理、操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)主要負(fù)責(zé)人考試題及答案
- 安全生產(chǎn)月測試題及答案
- 安全生產(chǎn)管理試題及答案
- 安全建設(shè)試題及答案
- 安全管理試題及答案計(jì)算
- 社區(qū)零售業(yè)態(tài)創(chuàng)新與數(shù)字化運(yùn)營模式在2025年的市場趨勢報(bào)告
- 原材料管理課件
- 廣西河池市環(huán)江縣2025屆八年級(jí)英語第二學(xué)期期末達(dá)標(biāo)檢測模擬試題含答案
- 2025屆廣東省深圳市龍崗區(qū)龍崗區(qū)橫崗六約學(xué)校七年級(jí)英語第二學(xué)期期末統(tǒng)考模擬試題含答案
- 公司相關(guān)課件名稱
- 2025年湖北省中考道德與法治試卷真題(標(biāo)準(zhǔn)含答案)
- 化妝品標(biāo)簽審核管理制度
- 2025年銅仁沿河土家族自治縣“特崗計(jì)劃”招聘考試筆試試題(含答案)
- 和美鄉(xiāng)村示范村規(guī)范方案
- 某鎮(zhèn)“十五五”發(fā)展規(guī)劃編制思路
- 2025春季學(xué)期國開電大本科《人文英語4》一平臺(tái)機(jī)考真題及答案(第四套)
- 政府采購評(píng)審專家考試真題庫(帶答案)
- (2025)國家版圖知識(shí)競賽(附含答案)
- 2025年高考志愿填報(bào)-12種選科組合專業(yè)對(duì)照表
- 2025甘肅省農(nóng)墾集團(tuán)有限責(zé)任公司招聘生產(chǎn)技術(shù)人員145人筆試參考題庫附帶答案詳解析版
- 牙科技術(shù)入股合作協(xié)議書
評(píng)論
0/150
提交評(píng)論