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