資源描述:
《線性表的順序存儲結(jié)構(gòu)和實(shí)現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、石家莊經(jīng)濟(jì)學(xué)院實(shí)驗(yàn)報告學(xué)院:專業(yè):班級:學(xué)號:姓名:信息工程學(xué)院計(jì)算機(jī)實(shí)驗(yàn)中心制實(shí)驗(yàn)題目:線性表的順序存儲結(jié)構(gòu)和實(shí)現(xiàn)實(shí)驗(yàn)室:機(jī)房4設(shè)備編號:10完成日期:2012年03月25號一、實(shí)驗(yàn)內(nèi)容1.熟悉C語言的上機(jī)壞境,掌握C語言的基本結(jié)構(gòu)。2.會定義線性表的順序存儲結(jié)構(gòu)。3.熟悉對順序表的一些基本操作(建表、插入、刪除等)和具體的函數(shù)定義。二、實(shí)驗(yàn)?zāi)康恼莆枕樞虼鎯Y(jié)構(gòu)的特點(diǎn),了解、掌握并實(shí)現(xiàn)順序表的常用的基本算法。三、實(shí)驗(yàn)的內(nèi)容及完成情況1.需求分析(1)線性表的抽象數(shù)據(jù)類型ADT的描述及實(shí)現(xiàn)。本實(shí)驗(yàn)實(shí)現(xiàn)使用VisualC++6.0實(shí)現(xiàn)線性
2、表順序存儲結(jié)構(gòu)的表示及操作。具體實(shí)現(xiàn)要求:(2)完成對線性表順序存儲結(jié)構(gòu)的表示和實(shí)現(xiàn)。(3)實(shí)現(xiàn)對線性表的建立和初始化。(4)實(shí)現(xiàn)對線性表插入和刪除部分元素。2.概要設(shè)計(jì)抽象數(shù)據(jù)類型線性表的定義:ADTLIST{抽象對象:D={ai
3、ai<-Elemset,i=1,2,...,n,n>=0}數(shù)據(jù)關(guān)系:Rl={4、已存在。操作結(jié)果:將L重置為空表。ListEmpty(L)初始條件:線性表L已存在。操作結(jié)果:若L為空表,則返回TRUE,否則返回FALSEoListLength(L)初始條件:線性表L已存在。操作結(jié)果:返回L中數(shù)據(jù)元素個數(shù)。GetElem(L,I,&e)初始條件:線性表L已存在,lv二iv二ListLength(L)。操作結(jié)果:用e返回L中第i個數(shù)據(jù)元素的值。LocateElem(L,e,compare())初始條件:線性表L已存在,compareO是數(shù)據(jù)元素判定的函數(shù)。操作結(jié)果:返回L屮第1個與e滿足關(guān)系compare()的數(shù)據(jù)元素
5、的位序。若這樣的數(shù)據(jù)元素不存在,則返回值為0。PriorElem(L,cur_e,&pre_e)初始條件:線性表L已存在。操作結(jié)果:若cuje是L的數(shù)據(jù)元素,且不是第一個,則用pre_e返回它的前驅(qū),否則操作失敗,pre_e無定義。NextElem(L,cur_e,&next_e)初始條件:線性表L已存在。操作結(jié)果:若cuje是L的數(shù)據(jù)元素,且不是最后一個,則用pre_e返回它的后繼,否則操作失敗,pre_e無定義。Listlnsert(&L,I,e)初始條件:線性表L己存在,lv二iv二ListLeng(h(L)+l。操作結(jié)果:在L屮
6、第i個位置Z前插入新的數(shù)據(jù)元素c,L的長度加1。ListDelete(&L,I,&e)初始條件:線性表L已存在且非空,lv=iv=ListLength(L)。操作結(jié)果:刪除L中第i個數(shù)據(jù)元素,并用e返回其值,L的長度減1。ListTraverse(L,visit())初始條件:線性表L己存在。操作結(jié)果:依次對L的每個數(shù)據(jù)元素調(diào)用函數(shù)visit()o一旦visit()失敗,則操作失敗。}ADTList3.詳細(xì)設(shè)計(jì)(1)抽象數(shù)據(jù)類型線性表順序存儲結(jié)構(gòu)的表示和實(shí)現(xiàn)Cl.h#include#include#
7、defineTRUE1#defineFALSE0#deflneOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;c2-l.h#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefintEleml^pe;typedefstruct{ElemType*elem;intlength;intlistsize;}Sqlist;B02-l.hStatusInitList_Sq(Sqlist&L)L.elem=(
8、Elemlpe*)malloc(LIST_INIT_SIZE*sizeof(ElemTjpe));if(!L-elem)exit(OVERFLOW);L>length=O;L.listsize=LIST_INIT_SIZE;returnOK;}StatusListlength(SqlistL){returnL.length;}StatusGetElem(SqlistL,inti,ElcmType&e){if(i9、
10、i>L.length)returnERROR;e=L.elem[i-l];returnOK;}StatusListIn
11、sert_Sq(Sqlist&L,inti,ElemTypee){Eleml^pe*nevbase,*p,*q;if(i12、
13、i>L.length+l)returnERROR;if(L.length>=