資源描述:
《實(shí)現(xiàn)線性表(順序存儲(chǔ))的按值查找功能》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、《程序設(shè)計(jì)與算法分析》實(shí)驗(yàn)報(bào)告學(xué)院:通信與信息工程學(xué)院班級(jí):電子商務(wù)1002姓名:閆樹彬?qū)W號(hào):1007100213《程序設(shè)計(jì)與算法分析》實(shí)驗(yàn)報(bào)告一設(shè)計(jì)的目的與內(nèi)容1.設(shè)計(jì)目的通過本實(shí)驗(yàn)需要掌握順序表的順序存儲(chǔ)結(jié)構(gòu),進(jìn)一步熟悉c語言的函數(shù)的基本結(jié)構(gòu),掌握程序間的相互關(guān)系,需要完成建立一個(gè)順序存儲(chǔ)結(jié)構(gòu)的線性表,并且通過遍歷完成按值查找的過程。2.實(shí)驗(yàn)內(nèi)容用C語言編寫一個(gè)順序存儲(chǔ)結(jié)構(gòu)的線性表程序,實(shí)現(xiàn)按值查找功能。二算法的基本思想1.數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)從第一個(gè)元素L->elem[0]起依次和x比較,當(dāng)找到一個(gè)與x相等的數(shù)據(jù)元素后,則返回它在順序表中的序號(hào);當(dāng)查找整個(gè)線
2、性表一遍沒有找到與x相等的元素時(shí),則返回-1.2.算法的基本思想本算法的主要運(yùn)算是比較。比較的次數(shù)與x在表中的位置有關(guān),也與表長有關(guān)。當(dāng)L->elem[0]=x時(shí),比較一次成功;當(dāng)L->elem[L->last]=x時(shí),比較n次成功,平均比較次數(shù)為(n+1)/2,時(shí)間復(fù)雜度為O(n)。三源程序代碼及測試結(jié)果1.源程序代碼#include#defineMAXLen100//定義了一個(gè)結(jié)構(gòu)體,包含線性表的數(shù)組和下標(biāo)特征typedefstructLinear_list{intelem[MAXLen];//定義一個(gè)線性表的足夠大的一維數(shù)組in
3、tlast;//線性表中最后一個(gè)元素在數(shù)組中的位置}SeqList;//線性表的創(chuàng)建過程SeqList*InitList(){SeqList*L;L=(SeqList*)malloc(sizeof(SeqList));//分配100個(gè)空間連續(xù)的一維數(shù)組L->last=-1;//數(shù)組長度為0returnL;}//建立實(shí)際的線性表,返回?cái)?shù)組的大小SeqList*create(SeqList*L){inti,n,temp;printf("請(qǐng)輸入實(shí)際數(shù)組的大小n:");scanf("%d",&n);printf("請(qǐng)輸入實(shí)際數(shù)組中的各個(gè)數(shù)值:");for(i=0
4、;i5、t(SeqList*L,intx){inti=0;while(i<=L->last&&L->elem[i]!=x)//*查找x在線性表中的位置*//i++;if(i>L->last)//判斷是否溢出return(-1);elsereturn(i+1);//返回x的位置(實(shí)際位置,不是存儲(chǔ)的位置)}//主函數(shù)的調(diào)用voidmain(){SeqList*L,*t;intflag,x;L=InitList();t=create(L);printf("請(qǐng)輸入要查找的數(shù)x:");scanf("%d",&x);disp(t);flag=LocastList(t,x)
6、;if(flag!=-1)disp(t);printf("x在線性表中的位置是:%d",flag);//實(shí)際位置,不是存儲(chǔ)的位置}2.測試結(jié)果3.存在的問題及解決剛開始主函數(shù)的調(diào)用老寫錯(cuò),結(jié)果錯(cuò)誤很多,后來,把主函數(shù)寫對(duì)了,錯(cuò)誤就沒了。四分析與討論剛開始的時(shí)候?qū)懗鰜淼某绦蚴莤是程序中給定的值,后來我們討論改進(jìn)了一下,printf("請(qǐng)輸入要查找的數(shù)x:");scanf("%d",&x);加入了這么一小段程序,結(jié)果程序變得好多了??梢宰约簭逆I盤輸入x的值了,不是固定的一個(gè)值了。五心的體會(huì)由于c的基礎(chǔ)沒打好,所以一直感覺程序很難寫,這次通過寫這個(gè)程序
7、,剛開始真的很困難,花費(fèi)了很多的時(shí)間,期間很久都調(diào)不通,不過還好,最后通過討論,改進(jìn)終于把它調(diào)通了,感覺棒極了,感覺對(duì)程序不是那么陌生了,我感覺到,程序這東西,你寫的多了,練習(xí)的多了,自然就變得容易了。希望以后用心學(xué)這方面的課程,爭取能把關(guān)于程序的課程學(xué)好。