資源描述:
《線性表的基本操作實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、實驗一:線性表的基本操作【實驗?zāi)康摹繉W(xué)習(xí)掌握線性表的順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu)的設(shè)計與操作。對順序表建立、插入、刪除的基本操作,對單鏈表建立、插入、刪除的基本操作算法?!緦嶒瀮?nèi)容】1.順序表的實踐1)建立4個元素的順序表s=sqlist[]={1,2,3,4,5},實現(xiàn)順序表建立的基本操作。2)在sqlist[]={1,2,3,4,5}的元素4和5之間插入一個元素9,實現(xiàn)順序表插入的基本操作。3)在sqlist[]={1,2,3,4,9,5}中刪除指定位置(i=5)上的元素9,實現(xiàn)順序表的刪除的基本操作。2.單鏈表的實踐3.1)建立一個包括頭結(jié)點和4個
2、結(jié)點的(5,4,2,1)的單鏈表,實現(xiàn)單鏈表建立的基本操作。2)將該單鏈表的所有元素顯示出來。3)在已建好的單鏈表中的指定位置(i=3)插入一個結(jié)點3,實現(xiàn)單鏈表插入的基本操作。4)在一個包括頭結(jié)點和5個結(jié)點的(5,4,3,2,1)的單鏈表的指定位置(如i=2)刪除一個結(jié)點,實現(xiàn)單鏈表刪除的基本操作。5)實現(xiàn)單鏈表的求表長操作。【實驗步驟】1.打開VC++。2.建立工程:點File->New,選Project標(biāo)簽,在列表中選Win32ConsoleApplication,再在右邊的框里為工程起好名字,選好路徑,點OK->finish。至此工程建立完畢。
3、3.創(chuàng)建源文件或頭文件:點File->New,選File標(biāo)簽,在列表里選C++SourceFile。給文件起好名字,選好路徑,點OK。至此一個源文件就被添加到了剛創(chuàng)建的工程之中。4.寫好代碼5.編譯->鏈接->調(diào)試1、#include"stdio.h"#include"malloc.h"#defineOK1#defineOVERFLOW-2#defineERROR0#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefintElemType;typedefintStatus;typedefstruct
4、{ElemType*elem;intlength;intlistsize;}SqList;StatusInitList(SqList&L){inti,n;L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)return(OVERFLOW);printf("輸入元素的個數(shù):");scanf("%d",&n);printf("輸入各元素的值:");for(i=0;i5、ST_INIT_SIZE;returnOK;}StatusListInsert(SqList&L,inti,ElemTypee){ElemType*newbase,*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)return(OVERFLOW);L.elem=newbase;L.listsize
8、+=LISTINCREMENT;}q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;returnOK;}StatusListDelete(SqList&L,inti,ElemType&e){ElemType*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;
11、returnOK;}voidVisitList(SqListL){inti;for(i=0;i12、表中的值:");ListDelete(L,i,e);VisitList(L);}2、#incl