資源描述:
《實(shí)驗(yàn)一 線性表》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告線性表學(xué)院:姓名:學(xué)號(hào):時(shí)間:專業(yè)班級(jí):線性表一、實(shí)驗(yàn)?zāi)康?.???掌握線性結(jié)構(gòu)中順序表和鏈表的基本概念、基本操作和應(yīng)用;2.???掌握線性表的基本操作:建表、插入、刪除、輸出等運(yùn)算在順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上的實(shí)現(xiàn)。3.通過(guò)本次實(shí)習(xí)加深對(duì)高級(jí)語(yǔ)言C語(yǔ)言的使用(特別是函數(shù)參數(shù)、指針類型、鏈表的使用)。熟悉線性表的基本運(yùn)算在兩種存儲(chǔ)結(jié)構(gòu)(順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu))上的實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容1.??編寫(xiě)生成線性表的函數(shù),線性表的元素從鍵盤(pán)輸入,分別使用順序和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)存儲(chǔ);2.編寫(xiě)在線性表中插入一個(gè)元
2、素的函數(shù);3.編寫(xiě)在線性表中刪除一個(gè)元素的函數(shù);4.編寫(xiě)輸出線性表的函數(shù);5.編寫(xiě)主函數(shù),調(diào)用以上各函數(shù),以便能觀察出原線性表以及作了插入或刪除后線性表的屏幕輸出。三、實(shí)驗(yàn)報(bào)告要求1.畫(huà)出程序流程圖并做簡(jiǎn)單分析2.源代碼(包括主要結(jié)構(gòu)、主要語(yǔ)句、函數(shù)注釋說(shuō)明)3.運(yùn)行結(jié)果(包括程序如何使用,輸入數(shù)據(jù)和輸出結(jié)果)4.實(shí)驗(yàn)體會(huì)和問(wèn)題分析四、基本原理(一)線性表是最常用的而且也是最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu),線性表是N個(gè)數(shù)據(jù)元素的有限序列。例如26個(gè)英文元素的字母表(A,B,C,D,···),其數(shù)據(jù)結(jié)構(gòu)的描述為:Line
3、ar_list=(D,R)其中,D={ai
4、ai屬于ElemSet,i=1,2,3,···},R={
5、i=2,3,4,……}。本實(shí)驗(yàn)是以數(shù)組的形式把線性表存放在計(jì)算機(jī)內(nèi)存的一個(gè)連續(xù)的區(qū)域內(nèi),這樣便有:LOC(ai+1)=LOC(ai)+mLOC(ai)=L0+m*(i-1)其中,m是存放每個(gè)元素所占的內(nèi)存字?jǐn)?shù),L0是a的地址,即首地址。(二)程序說(shuō)明插入一個(gè)新元素到第i個(gè)位置,既把元素ai向后移一個(gè)位置,成為元素ai+1,把新元素放入到第i個(gè)位置,其他元素依次后移。插入后的表長(zhǎng)是n+1(n
6、是原表長(zhǎng))。修改第i個(gè)元素,到第i個(gè)位置是把元素ai沖掉后存上新值。刪除第i個(gè)元素就是把余后的元素依次向前移一個(gè)位置。即:以元素ai+1,ai+2,···,依次取代ai,ai+1,···。刪除后的表長(zhǎng)是n-1(n是原表長(zhǎng))。(三)線性表鏈?zhǔn)酱鎯?chǔ)(選作)。五、實(shí)驗(yàn)程序#include#include#defineMAXSIZE20//數(shù)組最大界限typedefintElemType;//數(shù)據(jù)元素類型typedefstruct{ElemTypea[MAXSIZE];//一維
7、數(shù)組子域intlength;//表長(zhǎng)度域}SqList;//順序存儲(chǔ)的結(jié)構(gòu)體類型SqLista,b,c;voidcreat_list(SqList*L);voidout_list(SqListL);voidinsert_sq(SqList*L,inti,ElemTypee);ElemTypedelete_sq(SqList*L,inti);intlocat_sq(SqListL,ElemTypee);//主函數(shù)voidmain(){inti,k,loc;ElemTypee,x;charch;do{print
8、f("");printf("1.建立線性表");printf("2.插入數(shù)據(jù)元素");printf("3.刪除數(shù)據(jù)元素");printf("4.查找數(shù)據(jù)元素");printf("0.結(jié)束程序運(yùn)行");printf("==========================================");printf("請(qǐng)輸入你的選擇(1,2,3,4,0)");scanf("%d",&k);switch(k){case1:{creat_list(&a);out_lis
9、t(a);}break;case2:{printf("請(qǐng)輸入插入位置:");scanf("%d",&i);printf("請(qǐng)輸入要插入的數(shù)據(jù)元素值:");scanf("%d",&e);insert_sq(&a,i,e);out_list(a);}break;case3:{printf("請(qǐng)輸入刪除位置:");scanf("%d",&i);x=delete_sq(&a,i);out_list(a);if(x!=-1)printf("刪除數(shù)據(jù)元素為:%d",x);elseprintf("要?jiǎng)h
10、除的數(shù)據(jù)元素不存在!");}break;case4:{printf("請(qǐng)輸入要查找的數(shù)據(jù)元素值:");scanf("%d",&e);loc=locat_sq(a,e);if(loc==-1)printf("未找到指定數(shù)據(jù)元素!");elseprintf("已找到,數(shù)據(jù)元素位置是%d",loc);}break;}}while(k!=0);printf("按回車鍵,返回...");ch=getch