資源描述:
《數(shù)據(jù)結(jié)構(gòu)實驗報告-線性表.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、課程名稱_數(shù)據(jù)結(jié)構(gòu)__實驗名稱_線性表的操作實驗日期_______班級_計科__姓名_____學(xué)號__儀器編號______實驗報告要求1.實驗?zāi)康?.實驗要求3.實驗步驟4.程序清單5.運(yùn)行情況6.流程圖7.實驗體會實驗?zāi)康模簩嶒災(zāi)康模孩攀煜ぞ€性表的定義和基本操作;⑵掌握線性表的順序存儲結(jié)構(gòu)設(shè)計與基本操作的實現(xiàn)。實驗任務(wù)與要求:⑴定義線性表的順序存儲表示;⑵基于所設(shè)計的存儲結(jié)構(gòu)實現(xiàn)線性表的基本操作;⑶編寫一個主程序?qū)λ鶎崿F(xiàn)的線性表進(jìn)行測試;⑷線性表的應(yīng)用:編程實現(xiàn)順序表的合并實驗內(nèi)容:1、運(yùn)行以下程序,理解靜態(tài)分配順序存儲結(jié)構(gòu)的線性表的下列基本操作。(1)初始化順序表(2)
2、創(chuàng)建順序表(3)判斷空表(4)求順序表長度(5)輸出順序表(6)取順序表位置i的元素值(7)在順序表中查找值為e的元素位置(8)向順序表中插入一個元素(9)從順序表中刪除一個元素2、采用書上第22頁定義的線性表動態(tài)分配順序存儲結(jié)構(gòu),編程實現(xiàn)書中算法2.3、算法2.4和算法2.5。提示:要實現(xiàn)算法2.4和2.5,必須先創(chuàng)建n個數(shù)據(jù)元素的順序表,另外輸出順序表的操作也是必要的。3、采用線性表動態(tài)分配順序存儲結(jié)構(gòu),實現(xiàn)順序表的合并操作:①設(shè)有線性表LA和LB,試設(shè)計算法將LA和LB歸并為新的線性表LC;②設(shè)線性表L1和L2中的數(shù)據(jù)元素為整數(shù),且均已按值非遞減有序排列,要求L3中的
3、數(shù)據(jù)元素也按值非遞減有序排列。程序清單:1、略2、#include#include#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineERROR0#defineOK1typedefintElemType;typedefstruct{int*elem;intlength;intlistsize;}SqList;intInitList_Sq(SqList&L){L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.
4、elem)returnERROR;L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;}voidCreateList_Sq(SqList&L,intn){inti;printf("輸入%d個元素:",n);for(i=0;i5、tListInsert_Sq(SqList&L,inti,ElemTypee){ElemType*newbase;int*p,*q;if(i<1
6、
7、i>L.length+1)returnERROR;if(L.length>=L.listsize){newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)returnERROR;L.elem=newbase;L.listsize+=LISTINCREMENT;}q=&(L.elem[i-1]);for(
8、p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}intListDelete_Sq(SqList&L,inti,ElemType&e){int*p,*q;if(i<1
9、
10、i>L.length)returnERROR;p=&(L.elem[i-1]);e=*p;q=L.elem+L.length-1;for(++p;p<=q;++p)*(p-1)=*p;--L.length;returnOK;}voidmain(){ElemTypee,a,n,x,y;SqListL;InitList_Sq
11、(L);printf("輸入元素個數(shù)n:");scanf("%d",&n);CreateList_Sq(L,n);printf("輸出順序表所有元素:");DispList_Sq(L);printf("插入元素的位置:");scanf("%d",&x);printf("插入的元素為:");scanf("%d",&a);printf("在順序表第%d個位置插入%d",x,a);ListInsert_Sq(L,x,a);printf("輸出插入操作后順序表所有元素!");DispList_Sq(L);p