順序表的基本操作_第1頁
順序表的基本操作_第2頁
順序表的基本操作_第3頁
順序表的基本操作_第4頁
順序表的基本操作_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上*實驗題目 :順序表的基本操作 班 級 : 姓 名: 學 號: 專 業(yè): 實驗完成的時間: *一、 實驗目的(1) 掌握順序表的基本運算,熟悉對順序表的一些基本操作和具體函數(shù)的定義。(2) 掌握順序表的存儲結(jié)構(gòu)及其基本操作。(3) 熟悉c語言程序的基本結(jié)構(gòu),掌握函數(shù)定義、調(diào)用等功能。 (4) 熟悉c語言環(huán)境的使用及程序的輸入、編輯、調(diào)試和運行的全過程。二、實驗要求(1) 熟練掌握線性表的存儲結(jié)構(gòu)及其基本操作。(2) 理解所給出的算法,掌握順序表在實際中的應用。(3) 將上機程序調(diào)試通過,并能獨立完成一至兩個拓展題目。三、實驗內(nèi)容實現(xiàn)順序表上的插入、刪除等操作。調(diào)試程序

2、并對相應的輸出作出分析;修改輸入數(shù)據(jù),預期輸出并驗證輸出的結(jié)果。加深對有關(guān)算法的理解。(1)主要內(nèi)容:#define MAXSIZE 100 /*宏定義*/#define OVERFLOW -2#include stdio.h /*包含輸入輸出文件*/typedef int data;typedef struct /*定義順序表的結(jié)構(gòu)*/data vecMAXSIZE; /*順序表數(shù)據(jù)成員所占據(jù)的存儲空間*/ int last; /*順序表中最后一個元素在數(shù)組中的下標(或向量中的位置)從0開始*/sequenlist;int insert(L,i,x) /*在順序表的第i個元素之前插入一個新元

3、素x*/sequenlist *L;int i;data x; int j; if(*L).last)=MAXSIZE-1) printf(the list is overflow!n); return(0); /*溢出判斷*/ else if(i(*L).last+1) printf(position is not correct!n); return(0); /*插入位置不正確*/ else for(j=(*L).last;j=i-1;j-) /*后移元素*/ (*L).vecj+1=(*L).vecj; (*L).veci-1=x; /*插入新元素*/ (*L).last=(*L).la

4、st+1;/*修改last的值*/ return(1); void DELETET(L,i)sequenlist *L;int i;int j;if(iL-last+2)printf(刪除的位置錯誤n);elsefor(j=i;j=(*L).last;j+)(*L).vecj-1=(*L).vecj;(*L).last-; void listprint(sequenlist *L) /*輸出線性表*/ int i; for(i=0;iveci); main() sequenlist sl=1,2,3,4,5,6,7,8,9,10,9;/直接給順序表賦初值 sequenlist *L;/*定義一

5、個指向順序表類型的指針變量*/ int i,j,x; /elemtype e; L=&sl; /*給指針變量賦值*/ printf(請輸入你插入的位置和數(shù)n); scanf(%d,%d,&i,&x); printf(這個插入的位置: %d n插入的數(shù):%dn,i,x); insert(L,i,x); listprint(L); printf(請輸入刪除的位置:); scanf(%d,&j); DELETET(L,j); listprint(L);(2)預習思考題(1) 定義一個定位函數(shù)locate(L,x),具有元素檢索的功能。當順序表中存在一個值為x的數(shù)據(jù)元素時,返回第一次找到的數(shù)據(jù)元素的位

6、序,否則,給出一個值,表示值為x的元素不存在。在主程序中調(diào)用該函數(shù),分析操作結(jié)果。算法如下int locat(L,x) /* x由主函數(shù)輸入并接受locat的返回值 */sequenlist *L;int x;int i;for(i=0;i=(*L).last;i+)if(*L).veci=x)return (i+1); /*如果存在x則返回x的位置*/return 0; /*否則返回0 */說明:主函數(shù)輸入定位值X由函數(shù)locat(L,x)接收完成定位功能后返回x的位置,若X不存在則返回0,主函數(shù)接受返回值,若返回值不等于0則調(diào)用listprint(L)函數(shù)輸出結(jié)果,否則輸出X不在線性表中(

7、2) 定義一個逆置函數(shù)diverse(L),把順序表進行逆置。在主程序中調(diào)用該函數(shù),分析操作結(jié)果。void diverse(L)sequenlist *L; int i,j,n,k; n=(*L).last; j=(*L).last/2; for(i=0;i=j;i+) k=(*L).veci; (*L).veci=(*L).vecn-i; (*L).vecn-i=k; 運行程序前 運行程序后說明:主函數(shù)只需調(diào)用diverse(L)完成逆置功能,并調(diào)用listprint(L)函數(shù)輸出結(jié)果。(3)定義一個函數(shù)delsame(L),把順序表中重復的元素刪除掉,只保留一個。在主程序中調(diào)用該函數(shù),分析

8、操作結(jié)果void delsame( sequenlist *L )int i = 0, j, t;for(i = 0; i last;i+)for( t = i+1; tlast;t+)if(L-veci = L-vect)for(j = t; jlast; j+)L-vecj-1 = L-vecj;L-last -;運行程序前 運行程序后說明:主函數(shù)只需調(diào)用delsame(L),把順序表中重復的元素刪除掉,只保留一個,并調(diào)用listprint(L)函數(shù)輸出結(jié)果。四、算法設計與編碼1. 本實驗用到的理論知識順序表的數(shù)據(jù)結(jié)構(gòu)的定義,C語言中循環(huán)語句,if條件語句,函數(shù)定義、調(diào)用等相關(guān)知識。2. 算法概要設計具體有以下函數(shù):(1)insert(L,i,x) 在順序表的第i個元素之前插入一個新元素x.(2)deletet(L,i) 刪除順序表的第i個元素。(3)listprint(L) 輸出順序表(4)locate(L,x) 定位函數(shù),具有元素檢索的功能(5)diverse(L) 逆置函數(shù),把順序表進行逆置(6)delsame(L), 把順序表中重復的元素刪除掉,只保留一個主函數(shù)調(diào)用以上函數(shù)完成相關(guān)功能。3. 運行與測試(1) 在調(diào)試程序的過程中遇到什么問題,是如何解決的?在定位時出現(xiàn)多次返回0,在單步調(diào)試后,吧return 0 放到if語句外。(2) 程序運行的結(jié)果如何?五、總結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論