版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告數(shù)據(jù)結(jié)構(gòu)與算法實(shí)驗(yàn)一(順序表的操作)一、實(shí)驗(yàn)?zāi)康?.掌握線性表的順序存儲(chǔ)結(jié)構(gòu)的表示和實(shí)現(xiàn)方法。2.掌握順序表基本操作的算法實(shí)現(xiàn)。3.了解順序表的應(yīng)用。二、實(shí)驗(yàn)內(nèi)容1.建立順序表。2.在順序表上實(shí)現(xiàn)插入、刪除和查找操作(驗(yàn)證性內(nèi)容)。3.刪除有序順序表中的重復(fù)元素(設(shè)計(jì)性內(nèi)容)。4.完成一個(gè)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)(應(yīng)用性設(shè)計(jì)內(nèi)容)。三、實(shí)驗(yàn)的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(jī)(單機(jī))使用的軟件名稱、版本號(hào)以及模塊:Windows環(huán)境下的VC++等。四、知識(shí)準(zhǔn)備前期要求熟練掌握了C語(yǔ)言的編程規(guī)則、方法和順序表的基本操作算法。五、驗(yàn)證性實(shí)驗(yàn)1.實(shí)驗(yàn)要求編程實(shí)現(xiàn)如下功能:(1)根據(jù)輸入順序表的長(zhǎng)度n和各個(gè)數(shù)據(jù)元素值建立一個(gè)順序表,并輸出順序表中各元素值,觀察輸入的內(nèi)容與輸出的內(nèi)容是否一致。(2)在順序表的第i個(gè)元素之前插入一個(gè)值為x的元素,并輸出插入后的順序表中各元素值。(3)刪除順序表中第i個(gè)元素,并輸出刪除后的順序表中各元素值。(4)在順序表中查找第i個(gè)元素,如果查找成功,則顯示“查找成功”和該元素在順序表中的位置,否則顯示“查找失敗”。2.實(shí)驗(yàn)相關(guān)原理:線性表的順序存儲(chǔ)結(jié)構(gòu)稱為順序表,順序表的存儲(chǔ)結(jié)構(gòu)描述為:#defineMAXLEN30/*線性表的最大長(zhǎng)度*/typedefstruct{Elemtypeelem[MAXLEN];/*順序表中存放元素的數(shù)組,其中elemtype為抽象數(shù)據(jù)類型,在程序具體實(shí)現(xiàn)時(shí)可以用任意類型代替*/intlength;/*順序表的長(zhǎng)度,即元素個(gè)數(shù)*/}Sqlist;/*順序表的類型*/?!竞诵乃惴ㄌ崾尽?.順序表插入操作的基本步驟:要在順序表中的第i個(gè)數(shù)據(jù)元素之前插入一個(gè)數(shù)據(jù)元素x,首先要判斷插入位置i是否合法,假設(shè)線性表的表長(zhǎng)為n,則i的合法值范圍:1≤i≤n+1,若是合法位置,就再判斷順序表是否滿,如果滿,則增加空間或結(jié)束操作,如果不滿,則將第i個(gè)數(shù)據(jù)元素及其之后的所有數(shù)據(jù)元素都后移一個(gè)位置,此時(shí)第i個(gè)位置已經(jīng)騰空,再將待插入的數(shù)據(jù)元素x插入到該位置上,最后將線性表的表長(zhǎng)增加1。2.順序表刪除操作的基本步驟:要?jiǎng)h除順序表中的第i個(gè)數(shù)據(jù)元素,首先仍然要判斷i的合法性,i的合法范圍是1≤i≤n,若是合法位置,則將第i個(gè)數(shù)據(jù)元素之后的所有數(shù)據(jù)元素都前移一個(gè)位置,最后將線性表的表長(zhǎng)減1。3.順序表查找操作的基本步驟:要在順序表中查找一個(gè)給定值的數(shù)據(jù)元素,則可以采用順序查找的方法,從順序表中第1個(gè)數(shù)據(jù)元素開始依次將數(shù)據(jù)元素值與給定值進(jìn)行比較,若相等則返回該數(shù)據(jù)元素在順序表中的位置,否則返回0值?!竞诵乃惴枋觥?。statusSqlist_insert(Sqlist&L,inti,Elemtypex)/*在順序表L中第i個(gè)元素前插入新元素x*/{if(i<1||i>L.length+1)returnERROR;/*插入位置不正確則出錯(cuò)*/if(L.length>=MAXLEN)returnOVERFLOW;/*順序表L中已放滿元素,再做插入操作則溢出*/for(j=L.length-1;j>=i-1;j--)L.elem[j+1]=L.elem[j];/*將第i個(gè)元素及后續(xù)元素位置向后移一位*/L.elem[i-1]=x;/*在第i個(gè)元素位置處插入新元素x*/L.length++;/*順序表L的長(zhǎng)度加1*/returnOK;}statusSqlist_delete(Sqlist&L,inti,Elemtype&e)/*在順序表L中刪除第i個(gè)元素*/{if(i<1||i>L.length)returnERROR;/*刪除位置不正確則出錯(cuò)*/for(j=i;j<=L.length-1;j++)L.elem[j-1]=L.elem[j];/*將第i+1個(gè)元素及后繼元素位置向前移一位*/L.length--;/*順序表L的長(zhǎng)度減1*/returnOK;}intSqlist_search(SqlistL,Elemtypex)/*在順序表中查找值為x的元素,如果找到,則函數(shù)返回該元素在順序表中的位置,否則返回0*/{for(i=0;i<L.length&&L.elem[i]!=x;i++);/*從第一個(gè)元素開始依次將每個(gè)元素值與給定值x比較*/if(i<L.length)returni;elsereturno;}。3.學(xué)生實(shí)驗(yàn)代碼#include"stdio.h"#defineMaxSize50typedefstructnode{intelem[MaxSize];intlength;}Sqlist;Sqlistcreat(SqlistL,intn){inti=0;for(i=0;i<n;i++){intx;printf("請(qǐng)輸入值:");scanf("%d",&x);L.elem[i]=x;}L.length=n;returnL;}voidprint(SqlistL){for(inti=0;i<L.length;i++)printf("%4d",L.elem[i]);printf("\n");}SqlistSqlist_insert(SqlistL,inti,intx){if(i<1||i>L.length)printf("error");if(L.length>=MaxSize)printf("overflow");for(intj=L.length-1;j>=i-1;j--)L.elem[j+1]=L.elem[j];L.elem[i-1]=x;L.length++;returnL;}SqlistSqlist_delete(Sqlist&L,inti,inte){if(i<1||i>L.length)printf("error");//if(L.length>=MaxSize)//printf("overflow");for(intj=i;j<=L.length-1;j++)L.elem[j-1]=L.elem[j];L.length--;returnL;}intSqlist_search(SqlistL,intx){inti;for(i=0;i<L.length&&L.elem[i]!=x;++i);if(i<L.length)returni;elsereturn-1;}intmain({Sqlisthead;intn,k,i,x;printf("請(qǐng)輸入n的值:");scanf("%d",&n);head=creat(head,n);print(head);printf("請(qǐng)輸入插入i位置的值:");scanf("%d",&i);printf("請(qǐng)輸入要插入x的值:");scanf("%d",&x);head=Sqlist_insert(head,i,x);print(head);printf("請(qǐng)輸入要?jiǎng)h除的i位置的值:");scanf("%d",&i);head=Sqlist_delete(head,i,x);print(head);printf("請(qǐng)輸入要查找的值:");scanf("%d",&x);k=Sqlist_search(head,x);if(k==-1)printf("NOTfound\n");elseprintf("要查找的%d在%d位置上",x,k+1);return0;}。4.運(yùn)行結(jié)果六、設(shè)計(jì)性實(shí)驗(yàn)(以下兩個(gè)設(shè)計(jì)題目學(xué)生可根據(jù)自己的掌握程度或興趣自行選擇完成)1.編程實(shí)現(xiàn)刪除有序順序表中的所有重復(fù)元素,即使有序順序表中相同的元素只保留一個(gè)。⑴實(shí)驗(yàn)要求①根據(jù)輸入的n個(gè)非遞減的有序數(shù)據(jù)建立一個(gè)有序順序表,并輸出有序順序表中各元素值。②刪除有序順序表中所有的重復(fù)元素,并顯示刪除后的有序順序表中各元素值。⑵核心算法提示要在有序順序表中刪除重復(fù)的元素,首先就要抓住有序順序表的特性:重復(fù)的元素總是在相鄰的位置上,如:12,15,15,15,35,56,56,78。則刪除重復(fù)元素后所得的有序表為:12,15,35,56,78。下面給出大致的操作步驟:從第1個(gè)元素開始,依次將它與后面相鄰的元素進(jìn)行比較,如果相等則將前面那個(gè)相等的元素從順序表中刪除;如果不相等,則繼續(xù)往下比較,如此重復(fù),直到最后一個(gè)元素為止。⑶核心算法描述SqlistdelSqlist(SqlistL){inti=0,j;while(i<L.length-1)if(L.elem[i]==L.elem[i+1])/*如果第i個(gè)及第i+1個(gè)相鄰元素值相等*/{for(j=i+1;j<L.length;j++)/*將第i+1個(gè)元素及其之后的所有元素前移一個(gè)位地置,以達(dá)到刪除第i個(gè)元素的目的*/L.elem[j-1]=L.elem[j];L.length--;/*有序順序表的表長(zhǎng)減1*/}elsei++;returnL;}。2.編程實(shí)現(xiàn)一個(gè)簡(jiǎn)單學(xué)生成績(jī)表的操作。實(shí)驗(yàn)要求此系統(tǒng)的功能包括:①查詢:按特定的條件查找學(xué)生②
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 托班跳蚤市場(chǎng)課程設(shè)計(jì)
- 電子課程設(shè)計(jì)介紹
- 電子商務(wù)在服裝批發(fā)中的應(yīng)用考核試卷
- 2024年耳機(jī)市場(chǎng)調(diào)研與分析服務(wù)合同
- 電子禮品卡市場(chǎng)考核試卷
- 2024年度農(nóng)業(yè)產(chǎn)業(yè)宣傳合作協(xié)議3篇
- 2024年企業(yè)員工股份代持與業(yè)績(jī)考核協(xié)議3篇
- 2024年石料買賣協(xié)議書3篇
- 2024年行政合同行政優(yōu)先權(quán)在水利工程建設(shè)中的應(yīng)用3篇
- 物流資料員培訓(xùn)課程設(shè)計(jì)
- 基于單片機(jī)數(shù)字秒表的設(shè)計(jì)
- 中國(guó)自身免疫性腦炎診治專家共識(shí)2023年版
- 淺圓倉(cāng)倉(cāng)頂模板施工方案匯總
- 涂鱗、襯膠防腐專項(xiàng)施工方案
- 人工氣道濕化的護(hù)理培訓(xùn)課件
- GB/T 4269.3-2000農(nóng)林拖拉機(jī)和機(jī)械、草坪和園藝動(dòng)力機(jī)械操作者操縱機(jī)構(gòu)和其他顯示裝置用符號(hào)第3部分:草坪和園藝動(dòng)力機(jī)械用符號(hào)
- GB/T 21655.2-2019紡織品吸濕速干性的評(píng)定第2部分:動(dòng)態(tài)水分傳遞法
- GB/T 11618.1-2008銅管接頭第1部分:釬焊式管件
- GB/T 11348.3-1999旋轉(zhuǎn)機(jī)械轉(zhuǎn)軸徑向振動(dòng)的測(cè)量和評(píng)定第3部分:耦合的工業(yè)機(jī)器
- GB 18383-2007絮用纖維制品通用技術(shù)要求
- 搶救車管理質(zhì)控分析
評(píng)論
0/150
提交評(píng)論