資源描述:
《線性表的基本操作實驗報告》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、實驗一:線性表的基本操作【實驗目的】學習掌握線性表的順序存儲結構、鏈式存儲結構的設計與操作。對順序表建立、插入、刪除的基本操作,對單鏈表建立、插入、刪除的基本操作算法。【實驗內(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
2、.單鏈表的實踐3.1)建立一個包括頭結點和4個結點的(5,4,2,1)的單鏈表,實現(xiàn)單鏈表建立的基本操作。2)將該單鏈表的所有元素顯示出來。3)在已建好的單鏈表中的指定位置(i=3)插入一個結點3,實現(xiàn)單鏈表插入的基本操作。4)在一個包括頭結點和5個結點的(5,4,3,2,1)的單鏈表的指定位置(如i=2)刪除一個結點,實現(xiàn)單鏈表刪除的基本操作。5)實現(xiàn)單鏈表的求表長操作。【實驗步驟】1.打開VC++。2.建立工程:點File->New,選Project標簽,在列表中選Win32ConsoleApplica
3、tion,再在右邊的框里為工程起好名字,選好路徑,點OK->finish。至此工程建立完畢。3.創(chuàng)建源文件或頭文件:點File->New,選File標簽,在列表里選C++SourceFile。給文件起好名字,選好路徑,點OK。至此一個源文件就被添加到了剛創(chuàng)建的工程之中。4.寫好代碼5.編譯->鏈接->調(diào)試1、#include"stdio.h"#include"malloc.h"#defineOK1#defineOVERFLOW-2#defineERROR0#defineLIST_INIT_SIZE100#d
4、efineLISTINCREMENT10typedefintElemType;typedefintStatus;typedefstruct{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
5、("%d",&n);printf("輸入各元素的值:");for(i=0;i6、
7、i>L.length+1)returnERROR;if(L.length>=L.listsize){newbase=(ElemType*
8、)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)return(OVERFLOW);L.elem=newbase;L.listsize+=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,Ele
9、mType&e){ElemType*p,*q;if((i<1)
10、
11、(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;}voidVisitList(SqListL){inti;for(i=0;i12、ist(L);VisitList(L);printf("輸入插入位置和值:");scanf("%d,%d",&i,&e);printf("插入元素后,表中的值:");ListInsert(L,i,e);VisitList(L);printf("輸入刪除位置:");scanf("%d",&i);printf("刪除元素后,表中的值:");ListDelete(L,i,e);VisitList(L);}2、#incl