資源描述:
《線性表的基本操作》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗報告實驗類型__綜合設(shè)計__實驗室_軟件實驗室三__一、實驗題目線性表的基本操作二、實驗?zāi)康暮鸵?)掌握線性表的特點2)掌握線性表的順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的基本運算及應(yīng)用。3)盡可能考慮算法的健壯性4)實驗報告中要寫出測試數(shù)據(jù)、錯誤分析以及收獲。三、需求分析本演示程序用c++6.0編寫,完成單鏈表和順序表的生成,任意位置的插入、刪除,以及確定某一元素在單鏈表中的位置。1、輸入的形式和輸入值的范圍:插入元素時需要輸入插入的位置和元素的值;刪除元素時輸入刪除元素的位置;查找操作時需要輸入元
2、素的值。在所有輸入中,元素的值都是整數(shù)2、輸出的形式:在所有三種操作中都顯示操作是否正確以及操作后單鏈表的內(nèi)容。其中刪除操作后顯示刪除的元素的值,查找操作后顯示要查找元素的位置3、程序所能達(dá)到的功能:完成能完成兩種存儲結(jié)構(gòu)的基本運算以及二級菜單的運用4、測試數(shù)據(jù)1)輸入1,建立一個順序表鏈2)插入操作中依次輸入,1,2,3,4,生成一個單鏈表3)查找操作中依次輸入,2,返回這個元素在單鏈表中的位置4)刪除操作中依次輸入2,刪除位于2的元素5)輸入2,建立一個鏈表表,再做類似上述數(shù)據(jù)測試四、概要設(shè)
3、計為了實現(xiàn)上述程序功能,需要定義1、單鏈表的抽象類型如下:?ADTLinkList{ 數(shù)據(jù)對象:D={ai
4、ai∈IntegerSet,i=0,1,2,…,n,n≥0} 數(shù)據(jù)關(guān)系:R={
5、ai,ai+1∈D} 基本操作: CreateList_L1(&L) 操作結(jié)果:構(gòu)造一個空的單鏈表L. ListInsert_L1(&L,i,e) 初始條件:單鏈表L已存在操作結(jié)果:將元素e插入到單鏈表L的第i位置前ListInsert_L2(&L,i,e) 初始條件:
6、單鏈表L已存在 操作結(jié)果:將元素e插入到單鏈表L的第i位置后ListDelte_L(&L,i) 初始條件:單鏈表L已存在 操作結(jié)果:將單鏈表L中i位置的元素刪除 GetElem_L(L,i) 初始條件:單鏈表L依存在 操作結(jié)果:單鏈表L中查找第i個元素并返回其元素length_l(&L)初始條件:單鏈表L已存在 操作結(jié)果:將單鏈表L的長度值返回 }2、順序表的抽象數(shù)據(jù)類型 ADTlist{ 數(shù)據(jù)對象:D={ai
7、ai∈ElemSet,i=0,1,2,…,n,n≥0} 數(shù)據(jù)關(guān)
8、系:R={
9、ai,ai+1∈D} 基本操作: Initlist_Sq(&L) 操作結(jié)果:構(gòu)造一個空的順序表L. ListInsert_Sq(&L,i,e) 初始條件:順序表L已存在操作結(jié)果:將元素e插入到順序表L的第i位置ListDelete_Sq(&L,i,&e) 初始條件:順序表L已存在 操作結(jié)果:將順序表L中i位置的元素刪除,元素值置入e中返回 locate_Sq(L,e) 初始條件:順序表L依存在 操作結(jié)果:順序表L中查找元素e并返回其位置 }
10、3、本程序包含三個模塊1)主程序模塊:協(xié)調(diào)各函數(shù)的調(diào)用,實現(xiàn)所要求的功能;2)順序表模塊:實現(xiàn)線性表順序存儲后的基本操作;3)單鏈表模塊:實現(xiàn)線性表鏈?zhǔn)酱鎯蟮幕静僮鳌?、各模塊之間的調(diào)用關(guān)系如下:主程序模塊順序表模塊單鏈表模塊四、詳細(xì)設(shè)計1、順序表的元素類型typedefstruct{int*elem;intlength;intlistsize;}SqList;2、順序表的基本操作intInitlist_Sq(SqList*L)//構(gòu)造一個新的線性表//如果沒有開辟成功返回錯誤voidLis
11、tInsert_Sq(SqList*L,inti,inte)//在第i個位置插入元素evoidlistshow_Sq(SqList*L)//輸出順序表元素intlocate_Sq(SqList*L,inte)//查找元素e,并返回其位置intListDelete_Sq(SqList*L,inti,int*e)//刪除第i個位置上的元素,并返回其元素其中部分操作的偽碼算法如下:intListDelete_Sq(SqList*L,inti,int*e)//刪除第i個位置上的元素,并返回其元素{int
12、j;if((i<1)
13、
14、(i>L->length))returnERROR;*e=L->elem[i-1];j=i-1;while(jlength){L->elem[j]=L->elem[j+1];j++;}L->length--;}3、單鏈表的元素類型,結(jié)點類型和指針類型typedefstructLNode{intdate;structLNode*next;}LNode,*LinkList;4、單鏈表的基本操作voidCreateList_L1(LNode*l)//初始化鏈表intLi