資源描述:
《實(shí)驗(yàn)報(bào)告線 性表》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、姓名王倩學(xué)號(hào)1104180204班級(jí)計(jì)科1102年級(jí)1102級(jí)指導(dǎo)教師李翠西安財(cái)經(jīng)學(xué)院信息學(xué)院《算法與數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱線性表實(shí)驗(yàn)室實(shí)驗(yàn)日期第13頁(yè)順序表的基本運(yùn)算一、實(shí)驗(yàn)?zāi)康?.掌握線性表的順序存儲(chǔ)結(jié)構(gòu)(順序表)的含義與實(shí)現(xiàn)方法;2.熟練掌握線性表在順序存儲(chǔ)結(jié)構(gòu)上的插入、刪除、查找等操作。二、實(shí)驗(yàn)相關(guān)理論及內(nèi)容1.實(shí)驗(yàn)相關(guān)理論①線性表是最簡(jiǎn)單、最基本也是最常用的一種線性結(jié)構(gòu)。線性表有兩種存儲(chǔ)方法:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。線性表的基本操作是插入、刪除和檢索等。②了解有關(guān)順序表的概念和性質(zhì);掌握線性表的基本操作的原理以及實(shí)現(xiàn)其的
2、算法。2.實(shí)驗(yàn)內(nèi)容編寫(xiě)實(shí)現(xiàn)順序表的基本算法(初始化、查找、插入、刪除等)的函數(shù),并在此基礎(chǔ)上設(shè)計(jì)一個(gè)主程序完成如下功能:⑴初始化順序表L;⑵建立順序表L,如(a,b,c,d,c);⑶輸出順序表L的長(zhǎng)度;⑷輸出順序表L的第i個(gè)元素,如第3個(gè)元素;⑸輸出給定元素的位置,如輸出元素a的位置;⑹在第i個(gè)元素前插入給定元素,如在第4個(gè)元素前插入元素f;⑺刪除順序表L的第i個(gè)元素,如刪除順序表L的第3個(gè)元素。注:最好編寫(xiě)輸出順序表L的函數(shù)供主程序調(diào)用,以檢驗(yàn)⑵⑹⑺操作是否成功。三、實(shí)驗(yàn)環(huán)境WindowsXP2007,VisualC++6.0四
3、、實(shí)驗(yàn)步驟(必須包括代碼描述)Ⅰ.插入元素在順序表的某個(gè)位置,首先是要查看該位置是否合理,假如順序表中有n個(gè)元素,要插入元素在第i個(gè)位置,那么插入的位置i應(yīng)當(dāng)在第1與第n+1個(gè)元素位置之間,然后利用插入算法,將第n個(gè)元素一直到原第i個(gè)元素依次后移,騰出一個(gè)空位,將新數(shù)據(jù)插入在該位置,最后將順序表的表長(zhǎng)加1;Ⅱ.刪除順序表中的元素,首先仍然要判斷要?jiǎng)h除元素是否在順序表的合理位置,若是合理位置,則將包括該元素在內(nèi)的后面所有元素依次向前前移,直接用后繼覆蓋直接前驅(qū),最后將順序表的表長(zhǎng)減1;Ⅲ.查找某個(gè)元素是否在順序表中,則可以利用順序查
4、找的方法,從第一個(gè)元素開(kāi)始依次將元素關(guān)鍵字的值與給定元素關(guān)鍵字的值進(jìn)行比較,若相等則返回該元素在順序表中的位置,若不相等則返回值為空。實(shí)現(xiàn)代碼⑴.順序表的初始化(構(gòu)造一個(gè)空表)SeqList*init_SeqList()第13頁(yè){SeqList*L;L=(SeqList*)malloc(sizeof(SeqList));L->last=-1;returnL;}設(shè)調(diào)用函數(shù)為主函數(shù)。主函數(shù)對(duì)初始化函數(shù)的調(diào)用如下:main(){SeqList*L;L=init_SeqList();…}(2)插入運(yùn)算intInsert_SeqList(S
5、eqList*L,inti,datatypex){intj;if(L->last==MAXSIZE-1){printf("tableisfull!");return(-1);}if(i<1
6、
7、i>(L->last+2)){printf("placeiswrong!");return(0);}for(j=L->last;j>=i-1;j--)L->data[j+1]=L->data[j];L->data[i-1]=x;L->last++;return(1);}⑶.刪除運(yùn)算第13頁(yè)intDelete_SeqList(SeqList*L
8、,inti){intj;if(i<1
9、
10、i>(L->last+1)){printf("thiselementdon'texist!");return(0);}for(j=i;j<=L->last;j++)L->data[j-1]=L->data[j];L->last--;return(1);}然后依次輸出計(jì)算結(jié)果。一、實(shí)驗(yàn)數(shù)據(jù)記錄及分析(可包括錯(cuò)誤提示,原因,如何解決等)第13頁(yè)第13頁(yè)一、實(shí)驗(yàn)總結(jié)上機(jī)實(shí)驗(yàn)創(chuàng)建了一個(gè)順序表,并且熟練的掌握了線性存儲(chǔ)結(jié)構(gòu)的完成了在順序表上的插入元素,刪除元素,按值查找。通過(guò)元素的存儲(chǔ)順序反映線性表中
11、數(shù)據(jù)元素之間的邏輯關(guān)系;第13頁(yè)可隨機(jī)存取順序表的元素;順序表的插入、刪除操作要通過(guò)移動(dòng)元素實(shí)現(xiàn)。七、代碼清單#includetypedefstruct{chars[10];intlast;}Seqlist;voidinitlist(Seqlist*l)//初始化線性表{l->last=(-1);}voidcreat(Seqlist*l)//創(chuàng)建線性表{charch;ch=getchar();while(ch!='#'){l->last=l->last+1;l->s[l->last]=ch;ch=getchar(
12、);}}voidlocatdisply(Seqlist*l,intn)//輸出指定位置的元素{intlog=0;while(log!=n&&loglast){log++;}printf("%c",l->s[log]);}voiddisl