資源描述:
《線性表的順序存儲結(jié)構(gòu)實驗報告樣例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、年南昌航空大學(xué)實驗報告(用實驗報告紙,手寫)課程名稱:數(shù)據(jù)結(jié)構(gòu)實驗名稱:實驗一線性表的順序存儲結(jié)構(gòu)班級:080611學(xué)生姓名:賴凌學(xué)號:08061101指導(dǎo)教師評定:簽名:題目:有兩張非遞減有序的線性學(xué)生表A,B,采用順序存儲結(jié)構(gòu),兩張表合并用c表存,要求C仍為非遞減有序的,并刪除C中值相同的表。一、需求分析⒈本演示程序根據(jù)已有的6位學(xué)生的信息,實現(xiàn)兩張表的合并及刪除值相同元素的操作,不需要用戶重新輸入學(xué)生的信息。⒉在演示過程序中,用戶敲擊鍵盤,即可觀看演示結(jié)果。⒊程序執(zhí)行的命令包括:(1)構(gòu)造線性表A(2)構(gòu)造線性表B(3)求兩張表的并(4)刪除C中值
2、相同的元素二、概要設(shè)計⒈為實現(xiàn)上述算法,需要線性表的抽象數(shù)據(jù)類型:ADTStack{數(shù)據(jù)對象:D={ai:
3、ai∈ElemSet,i=1…n,n≥0}數(shù)據(jù)關(guān)系:R1={
4、ai-1,ai∈D,i=2,…n≥0}基本操作:init(list*L)操作結(jié)果:構(gòu)造一個空的線性表L。ListLength(List*L)初始條件:線性表L已經(jīng)存在操作結(jié)果:返回L中數(shù)據(jù)元素的個數(shù)。GetElem(ListL,inti,ElemType*e)初始條件:線性表L已經(jīng)存在,1≤i≤ListLength(&L)操作結(jié)果:用e返回L中第i個數(shù)據(jù)元素的值。Equ
5、alList(ElemType*e1,ElemType*e2)初始條件:數(shù)據(jù)元素e1,e2存在操作結(jié)果:以e1,e2中的姓名項作為判定e1,e2是否相等的依據(jù)。Less_EquaList(ElemType*e1,ElemType*e2)初始條件:數(shù)據(jù)元素e1,e2存在操作結(jié)果:以e1,e2中的姓名項(為字符串)的≤來判定e1,e2是否有≤的關(guān)系。LocateElem(List*La,ElemTypee,inttype)初始條件:線性表La已經(jīng)存在11操作結(jié)果:判斷La中是否有與e相同的元素。MergeList(List*La,List*Lb,List*L
6、c)初始條件:非遞減線性表La,Lb已經(jīng)存在操作結(jié)果:合并La,Lb得到Lc,Lc仍按非遞減有序排列。UnionList(List*La,List*Lb)初始條件:線性表La,Lb已經(jīng)存在操作結(jié)果:將所有在Lb而不在La中的元素插入到La中表尾的位置。PrintList(ListL)初始條件:線性表L已經(jīng)存在操作結(jié)果:打印出表L。ListInsert(List*L,inti,structSTUe)初始條件:線性表L已經(jīng)存在,1≤i≤ListLength(&L)+1操作結(jié)果:在表L中第i個位置前插入元素e,L的長度加1。}ADTList2.本程序有三個模塊
7、:⑴主程序模塊voidmain(){初始化;{接受命令;顯示結(jié)果;}}⑵線性表單元模塊:實現(xiàn)線性表抽象數(shù)據(jù)類型;⑶結(jié)點結(jié)構(gòu)單元模塊:定義線性表中的結(jié)點結(jié)構(gòu)。三、詳細(xì)設(shè)計⒈元素類型,結(jié)點類型structSTU{charname[20];//學(xué)生名字、學(xué)號、年齡、分?jǐn)?shù)charstuno[10];intage;intscore;};typedefstructSTUElemType;//元素類型structLIST{ElemType*elem;intlength;//表的長度、大小intlistsize;};typedefstructLISTlist;//結(jié)點類
8、型112.對抽象數(shù)據(jù)類型中的部分基本操作的偽碼算法如下:intinit(List*L){L→elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE);If(!L→elem)exit(OVERFLOW);L→length=0;L→listsize=LIST_INIT_SIZE;ReturnOK;}//初始化表intListLength(List*L){returnL→length;}//返回表長voidGetElem(ListL,inti,ElemType*e){*e=L.elem[i];}//返回元素
9、intlocateElem(List*La,ElemTypee,inttype){intI;switch(type)//確定元素在表中的位置{caseEQVAL;for(i=0;i10、m;Lc→Listsize=Lc→length=La→length+Lb→len