數(shù)據(jù)結(jié)構(gòu)實驗一_第1頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第2頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第3頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第4頁
數(shù)據(jù)結(jié)構(gòu)實驗一_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《數(shù)據(jù)結(jié)構(gòu)》實驗報告一

學(xué)校:班級:

學(xué)號:姓名:

日期:程序名:

一、上機實驗的問題和要求:

順序表的查找、插入與刪除。設(shè)計算法,實現(xiàn)線性結(jié)構(gòu)上的順序表的產(chǎn)生以及元素的查

找、插入與刪除。具體實現(xiàn)要求:

1.從鍵盤輸入10個整數(shù),產(chǎn)生順序表,并輸入結(jié)點值。

2.從鍵盤輸入1個整數(shù),在順序表中查找該結(jié)點的位置。若找到,輸出結(jié)點的位置;若找

不到,則顯示“找不到”。

3.從鍵盤輸入2個整數(shù),一個表示欲插入的位置i,另一個表示欲插入的數(shù)值x,將x插

入在對應(yīng)位置上,輸出順序表所有結(jié)點值,觀察輸出結(jié)果。

4.從鍵盤輸入1個整數(shù),表示欲刪除結(jié)點的位置,輸出順序表所有結(jié)點值,觀察輸出結(jié)果。

二、程序設(shè)計的基本思想,原理和算法描述:

(包括程序的結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),輸入/輸出設(shè)計,符號名說明等)

三、源程序及注釋:ttinclude<stdio.h>

/*順序表的定義:*/

#defineListSize100/*表空間大小可根據(jù)實際需要而定,這里假設(shè)為100*/

typedefintDataType;/*DataType可以是任何相應(yīng)的數(shù)據(jù)類型如int,float或char*/

typedefstruct

{DataTypedata[ListSize];/*向量data用于存放表結(jié)點*/

intlength;/*當(dāng)前的表長度*/

}SeqList;

/*子函數(shù)的聲明*/

voidCreateList(SeqList*L,intn);/*創(chuàng)建順序表函數(shù)*/

intLocateList(SeqListL,DataTypex);/*查找順序表*/

voidTnsertList(SeqList*L,DataTypex,inti);/*在順序表中插入結(jié)點x*/

voidDeleteList(SeqList*L,inti);/*在順序表中刪除第i個結(jié)點*/

voidPrintList(SeqListL,intn);/*打印順序表中前n個結(jié)點*/

voidmain()

(

SeqListL;

intn=10,x,i;/*欲建立的順序表長度*/

L.length=0;

/*調(diào)用創(chuàng)建線性表函數(shù)*/

printf(''createfunction:Xn^);

CreateList(&L,n);/*建立順序表*/

PrintList(L,n);/*打印順序表*/

/*調(diào)用查找函數(shù)*/

printf(^searchfunction:\n,9;

printf("inputthedatayouwanttosearch:");

scanf&x);

i=LocateList(L,x);/*順序表查找*/

if(i==0)

printf("sorry,don'tfind%d!\n\n〃,x);

else

printf(,zihavefindthe%d,itlocatein%d!\n\n,z,x,i);

/*調(diào)用插入函數(shù)*/

printf("Insertfunction:\n");

printf(〃輸入要插入的位置:(inputtheposition:),z);

scanf(,z%dz/,&i);

printf(〃輸入要插入的元素:(inputthedata:)");

scanf&x);

InsertList(&L,x,i);/*順序表插入*/

PrintList(L,n);/*打印順序表*/

/*調(diào)用刪除函數(shù)*/

printf("deletefunction:\n");

printf("輸入要刪除的位置:(inputtheposition:)");

scanf&i);

DeleteList(&L,i);/*順序表刪除*/

PrintList(L,n);/*打印順序表*/

/*順序表的建立:*/

voidCreateList(SeqList*L,intn)

{inti;

for(i=0;i<n;i++)

{printf(,z\ninputthe%ddata:",i+1);

scanf("%d”,&(*L).data[i]);

}

(*L).length二n;

)

/*順序表的查找:*/

intLocateList(SeqListL,DataTypex)

{inti=0;

while(i<__=L.length-1&&____L.data[i]_=!e)

++i;

if(i<L.length)returni+1;

elsereturn0;

)

/*順序表的插入:*/

voidInsertList(SeqList*L,DataTypex,inti)

{/*將新結(jié)點x插入L所指的順序表的第i個結(jié)點的位置上*/

intj;

if(i<l||i>_L.length)

(

printf(〃插入位置非法”);

exit(0);

)

if((*L).length>=__MaxSize)

(

printf(〃表空間溢出,退出運行〃);

exit(0);

)

for(j=(*L).length-1;j>=i-l;j-)

―L.data[k+l]=L.data[k];/*順序表元素從后

向前依次后移*/

L.data[i-l]=e;/*將x插入第i個結(jié)點位置*/

L.1ength++;/*表長自增]*/

)

/*順序表的刪除:*/

voidDeleteList(SeqList*L,inti)

{/*從L所指的順序表中刪除第i個結(jié)點*/

intj;

if(i<l||i>___L.length)

printf(〃刪除位置非法〃);

exit(0);

)

for(j=i;j<=(*L).length-1;j++)

_L.data[k-l]=L.data[k]/*順序表自第i個

結(jié)點開始,依次前移*/

[,.length—―/*表長自減1*/

)

/*順序表的打印:*/

voidPrintList(SeqListL,intn)

{inti;

printf(uthesequal1istdatais:");

for(i=0;i<n;i++)

printf(,z%dL.data[i]);

printf(〃\n\n〃);

}

調(diào)試后的代碼:

#include<stdio.h>

^defineMaxSize100

typedefintDatatype;

typedefstruct

(

Datatypedata[MaxSize];

intlength;

}seqlist;

voidGreatList(seqlist*L,intn);

intGetList(seqlistL,Datatypex);

intIntList(seqlist*L,Datatypex,inti);

intDelList(seqlistL,inti,Datatype*x);

voidPrintList(seqlistL,intn);

voidmain()

(

seqlistL;

intn=10,x,i;

L.length=0;

printf("greatfunction:\n");

GreatList(&L,n);

PrintList(L,n);

printf(^getfunction:\n/z);

printf(^pleaseinputyourwanttosearch'll");

scanf("%d",&x);

i=GetList(L,x);

if(i==0)

(

printf(^Xnsorry,don'tfind%d\n”,x);

}

else

(

printf("\nhavefindthe%d,itlocatedin%d\n”,x,i);

)

printf("\nlnsfunction:\n");

printf(^Xnpleaseinputtheposition:\n");

scanf("%d",&i);

printf(^Xnpleaseinputthedata:\nz,);

scanf&x);

IntList(&L,i,x);

PrintList(L,n);

printf("\ndelfunction:\n^);

printf(^\npleaseinputyouwanttodeleteposition:\n");

scanf&i);

printf(^Xnpleaseinputyouwantdeletenumber:");

scanf&x);

DelList(L,i,&x);

PrintList(L,n);

//getchO;

)

voidGreatList(seqlist*L,intn)

inti;

for(i=0;i<n;i++)

printf(^Xnpleaseinputthe%ddata\n”,i+1);

scanf("%d”,&(*L).data[i]);

)

(*L).length=n;

)

intGetList(seqlistL,Datatypex)

(

inti;

i=0;

while((i<=L.length-1)&&(L.data[i]!=x))

i++;

if(i<L.length)

return(i+1);

else

return(-1);

)

intIntList(seqlist*L,Datatypex,inti)

(

intk;

if((i<l)||(i>L->length))

(

printf(z,\nThepositioniswrong'n");

return(0);

)

if(L->length>=MaxSize)

(

printf("\nempty\n");

return(0);

)

for(k=L->length-l;k>=i-l;i++)

(

L->data[k+1]=L->data[k];

L->data[i-l]=x;

L->length++;

return(1);

)

intDelList(seqlistL,inti,Datatype*x)

(

intk;

if((i<l)||(i>L.length))

(

printf("\nThepositioniswrong\n");

return(0);

)

*x=L.data[i-l];

for(k=i;i<=Llength;k++)

(

L.data[k-l]=L.data[k];

L.length—;

)

return(1);

)

voidPrintList(seqlistL,intn)

(

inti;

printf("\nThesequalListDatais:\n");

for(i=0;i<n;i++)

printf("%dL.data[i]);

printf("\n");

)

四、運行輸出結(jié)果:

inputthe7data:7

inputthe8data:8

inputthe9data:9

inputthe10data:10

thesequa11istdatais:lZ345678S10

searchfunction:

inputthedatayouwanttosearch:4

ihavefindthe4,itlocatein4

Insertfunction:

inputtheposition:6

inputthedata:456

thesequa11istdatais:1Z34545667891。

deletefunction:

inputtheposition:3

thesequa11istdatais:1245456678910

五、調(diào)試和運行程序過程中產(chǎn)生的問題及采取的措施:

開始只是一些小的問題,如丟了分號、括

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論