軟件技術(shù)基礎(chǔ)上機實驗報告_第1頁
軟件技術(shù)基礎(chǔ)上機實驗報告_第2頁
軟件技術(shù)基礎(chǔ)上機實驗報告_第3頁
軟件技術(shù)基礎(chǔ)上機實驗報告_第4頁
軟件技術(shù)基礎(chǔ)上機實驗報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子科技大學(xué)上機實驗報告科目名稱: 軟件技術(shù)基礎(chǔ) 任課教師: 龐曉鳳 學(xué)生姓名: 王德斌 學(xué)生學(xué)號: 30 軟件技術(shù)基礎(chǔ)上機實驗報告實驗一:順序表和單鏈表基本操作上機實驗 一、實驗?zāi)康模豪斫饩€性結(jié)構(gòu)的基本概念,掌握兩種基本的存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)(順序表)和鏈?zhǔn)酱鎯Y(jié)構(gòu)(單鏈表);用C語言實現(xiàn)在兩種存儲結(jié)構(gòu)上的對應(yīng)操作(包括創(chuàng)建、刪除插入元素、遍歷等),鞏固強化C程序設(shè)計的基本方法和能力。 二、實驗內(nèi)容: 1、順序表的創(chuàng)建、元素刪除、遍歷等操作: 有序的一組整數(shù)1,2,3,4,6,設(shè)計順序表并實現(xiàn)以下操作: A.初始化一個空的順序表; B.從鍵盤依次輸入上述數(shù)據(jù)添加到順序表中; C.刪除表中的

2、第四個數(shù)據(jù)元素;D.顯示B、C操作后順序表中的內(nèi)容。程序:#include#define true 1#define false 0#define Maxnum 10typedef structint dataMaxnum;int num;listtype;int delete(listtype *l,int x)int i;if(xl-num-1)printf(未返回順序表);return(false);for(i=x+1;inum)+1);i+)l-datai-2=l-datai-1;l-num-;return(true);int display(listtype *l)int j;pri

3、ntf(順序表如下n);if(l-num=0)printf(空表);elseif(l-num=1)printf(%d,l-data0);elsefor(j=0;jnum-1;j+)printf(%dn,l-dataj);printf(%dn,l-dataj);return(true);main()listtype list;int i,x;printf(請輸入表長);scanf(%d,&list.num);printf(請輸入數(shù)據(jù));for (i=0;ilist.num;i+)scanf(%d,&list.datai);printf(請輸入要刪除的數(shù)據(jù)位置);scanf(%d,&x);dele

4、te(&list,x);display(&list);實驗結(jié)果:2、現(xiàn)有有序的一組整數(shù)1,2,2,3,4,6,6,設(shè)計單鏈表,分別編寫函數(shù)實現(xiàn)以下操作:A.初始化一個空鏈表。B.依次添加上述一組數(shù)據(jù)(結(jié)點),生成該鏈表。C.統(tǒng)計該鏈表的長度。D.在表中查找數(shù)據(jù)為3和7的結(jié)點,并返回其位置(若找不到返回 -1)。E.刪除中間重復(fù)結(jié)點,使鏈表變?yōu)?1-2-3-4-6。F.顯示經(jīng)B,E操作后,鏈表的內(nèi)容。程序:#include#include#includestruct nodeint val;int w;struct node *next;int a7=1,2,2,3,4,6,6;node *h=

5、(node *)malloc(sizeof(node);node *t;node *x;void print()printf(此單鏈表為:);for(x=h;x-next!=NULL;x=x-next)printf(%d ,x-next-val);void print_len()int len=0;for(x=h;x-next!=NULL;x=x-next) len+; printf(n鏈表長度為:%dn,len);void sec(int i)int ans1=-1;for(x=h;x-next!=NULL;x=x-next) if(x-next-val=i) ans1=x-next-w;

6、break; printf(%dn,ans1);void d()for(x=h;x-next!=NULL;x=x-next) if(x-next-val=x-next-next-val) x-next=x-next-next; int main()printf(題中單鏈表如下n); t=h; int ans1=-1;int len=0; for(int i=0;inext=p; t-next-val=ai; t-next-w=i; t=t-next; t-next=NULL; print(); print_len(); printf(數(shù)據(jù)為3的結(jié)點位置為:); sec(3); printf(數(shù)

7、據(jù)為7的結(jié)點位置為:); sec(7); d(); print(); return 0; 實驗結(jié)果:實驗二:基本查找排序操作上機實驗 一、實驗?zāi)康模赫莆諆煞N基本的查找算法(順序查找、二分查找)和三種基本排序算法(簡單插入排序、簡單冒泡排序、簡單選擇排序)的原理及C語言實現(xiàn)。 二、實驗內(nèi)容:現(xiàn)有一順序表,表中元素分別為51,38,79,22,91,105,33,52,16,112,分別編寫函數(shù)實現(xiàn)以下操作:A、 采用簡單插入排序法實現(xiàn)對順序表的排序,顯示每一趟的排序結(jié)果; B、采用簡單冒泡排序法實現(xiàn)對順序表的排序,顯示每一趟的排序結(jié)果;C、采用簡單選擇排序法實現(xiàn)對順序表的排序,顯示每一趟的排序結(jié)

8、果;D、對上述排序后的順序表采用順序查找方法,查找關(guān)鍵字為52和關(guān)鍵字為36的元素,分別顯示查找結(jié)果; E、對上述排序后的順序表采用二分查找方法,查找關(guān)鍵字為22的元素,顯示查找結(jié)果。程序:#include #include #define true 1#define false 0#define Maxnum 10 /設(shè)定最大表長#define SWAP(x,y) int t; t = x; x = y; y = t;typedef struct int dataMaxnum; int num; listtype;void selsort(listtype *l);void insort(l

9、isttype *l) ;void bubsort(listtype *l);int seq_search(listtype *l);int bin_search(listtype *l);main() void display(listtype *l) ; listtype list; int i,j,x; printf(請輸入表長); scanf(%d,&list.num); /設(shè)定表長 printf(請輸入各數(shù)據(jù)n); for(i=0;inum=0) printf(空表); else if (l-num=1) printf(%d,l-data0); else for(j=0;jnum-1

10、;j+) printf(%dn,l-dataj); printf(%dn,l-dataj); return(false);void selsort(listtype *l) int i,j,small,k; for (i=0;inum-1);i+) small=i; for(j=i+1;jnum;j+) if(l-datajdatasmall) small=j; if(small!=i) SWAP(l-datasmall,l-datai) printf(第 %d 次排序:, i+1); for(k = 0; k num; k+) printf(%d , l-datak); printf(n);

11、 printf(n); void insort(listtype *l) int i, j, k, tmp; for(j = 0; j num-1); j+) tmp =l-dataj+1; i = j ; while(i-1&tmp datai) l-datai+1 =l-datai; i-; l-datai+1 = tmp; printf(第 %d 次排序:, j); for(k = 0; k num; k+) printf(%d ,l-datak); printf(n); void bubsort(listtype *l) int i, j, k, flag = 1; for(i = 0

12、; i num & flag = 1; i+) flag = 0; for(j = 0; j num-i-1; j+) if(l-dataj+1 dataj) SWAP(l-dataj+1, l-dataj); flag = 1; printf(第 %d 次排序:, i+1); for(k = 0; k num; k+) printf(%d , l-datak); printf(n); int seq_search(listtype *l) int i,key,j; j=0; printf(請輸入要查找數(shù)據(jù)的關(guān)鍵字。n); scanf(%d,&key); for (i=0;inum;i+) i

13、f(l-datai=key) printf(searching successn); printf(所查找數(shù)據(jù)位置為%dn,i+1); else j+; if(j=l-num) printf(未找到n);int bin_search(listtype *l) int low,high,mid,key; low=0; high=(l-num)-1; printf(請輸入要查找的數(shù)據(jù)的值。n); scanf(%d,&key); while(lowdatamid=key) printf(searching successn); printf(所查找的數(shù)據(jù)位置是%dn,mid); return(mid); else if(l-datamid)key) low=mid+1; else high=mid-1

溫馨提示

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

最新文檔

評論

0/150

提交評論