車牌管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第1頁
車牌管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第2頁
車牌管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第3頁
車牌管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第4頁
車牌管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)選題名稱:汽車牌照治理系統(tǒng)姓名:學(xué)號:專業(yè)班級:計(jì)算機(jī)科學(xué)與應(yīng)用G計(jì)111系院:計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間:2021.12.242021.1.4設(shè)計(jì)地點(diǎn):軟件工程實(shí)驗(yàn)室、教室成績:指導(dǎo)教師評語:簽名:1 .課程設(shè)計(jì)目的1、練習(xí)學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨(dú)立完成問題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題.2 .初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等根本方法和技能;3 .提升綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的水平;4 .練習(xí)用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般標(biāo)準(zhǔn)進(jìn)行軟件開發(fā),穩(wěn)固、深化學(xué)生的理論知識,

2、提升編程水平,并在此過程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng).2 .課程設(shè)計(jì)任務(wù)與要求:任務(wù)根據(jù)教材?數(shù)據(jù)結(jié)構(gòu)-C語言描述?耿國華主編和參考書?數(shù)據(jù)結(jié)構(gòu)題集C語言版?嚴(yán)蔚敏、吳偉民主編選擇課程設(shè)計(jì)題目,要求通過設(shè)計(jì),在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面加深對課程根本內(nèi)容的理解和綜合運(yùn)用.設(shè)計(jì)題目從任務(wù)書所列選題表中選取,每班每題不得超過2人.學(xué)生自選課題學(xué)生原那么上可以結(jié)合個(gè)人愛好自選課題,要求課題有一定的深度與難度,有一定的算法復(fù)雜性,能夠穩(wěn)固數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的知識.學(xué)生自選課題需在18周前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效.要求:1、在處理每個(gè)題目時(shí)

3、,要求從分析題目的需求入手,按設(shè)計(jì)抽象數(shù)據(jù)類型、構(gòu)思算法、通過設(shè)計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類型、編制上機(jī)程序和上機(jī)調(diào)試等假設(shè)干步驟完成題目,最終寫出完整的分析報(bào)告.前期準(zhǔn)備工作完備與否直接影響到后序上機(jī)調(diào)試工作的效率.在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率.2、.設(shè)計(jì)的題目要求到達(dá)一定工作量300行以上代碼,并具有一定的深度和難度.3、程序設(shè)計(jì)語言推薦使用C/C+,程序書寫標(biāo)準(zhǔn),源程序需加必要的注釋;4、每位同學(xué)需提交可獨(dú)立運(yùn)行的程序;5、每位同學(xué)需獨(dú)立提交設(shè)計(jì)報(bào)告書每人一份,要求編排格式統(tǒng)一、標(biāo)準(zhǔn)、內(nèi)容充實(shí),不少于10頁代碼不算;6、課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手水平的一種手段,單獨(dú)考核

4、.3 .課程設(shè)計(jì)說明書一需求分析問題描述排序和查找是在數(shù)據(jù)處理中使用頻度極高的操作,為加快查找的速度需現(xiàn)對數(shù)據(jù)記錄按關(guān)鍵字排序.在汽車數(shù)據(jù)的信息模型中,汽車牌照是關(guān)鍵字,而且是具有結(jié)構(gòu)特點(diǎn)的一類關(guān)鍵字,因?yàn)槠嚺普仗柺菙?shù)字和字母混編的,例如01B7328,這種記錄集合是一個(gè)適于利用多關(guān)鍵字進(jìn)行排序的典型例子.根本要求(1)首先利用鏈?zhǔn)交鶖?shù)排序方法實(shí)現(xiàn)排序,然后利用折半查找方法,實(shí)現(xiàn)對汽車記錄按關(guān)鍵字進(jìn)行查找.(2)汽車記錄集合可以人工錄入,也可以按自動(dòng)方式隨機(jī)生成.本人采用的人工錄入.二概要設(shè)計(jì)1 .有關(guān)的數(shù)據(jù)#defineKEY_SIZE8#defineLIST_SIZE100typedef

5、struct將車牌號以字符的形式存儲車主的名字車的品牌charkeyKEY_SIZE;charname10;charcarname20;intnext;RecordType;typedefstruct是一個(gè)RecordType類型的數(shù)組RecordTyperLIST_SIZE;intlength;intkeynum;SLinkList;2 .為了實(shí)現(xiàn)上述功能,需要使用一下函數(shù):main():主函數(shù)noun():輸出提示信息菜單GetData():從鍵盤添加車輛函數(shù)Distribute.:進(jìn)行基數(shù)排序每一趟的分配函數(shù)Collect.:進(jìn)行基數(shù)排序每一趟的收集函數(shù)Binsrch():二分查找函數(shù)p

6、rint():輸出所有車輛信息函數(shù)Radixsort():基數(shù)排序函數(shù)Zl():基數(shù)排序后的整理o上圖為各函數(shù)之間根本關(guān)系下列圖為程序執(zhí)行的流程圖.輸入i調(diào)用子函數(shù)GetData()調(diào)用子函數(shù)print()調(diào)用子函數(shù)Radixsort()調(diào)用子函數(shù)Binsrch()c一結(jié)果一好三詳細(xì)設(shè)計(jì)1、基數(shù)排序的過程:首先將待排序的記錄分成假設(shè)干個(gè)子關(guān)鍵字,排序時(shí),先按最低位的關(guān)鍵字對記錄進(jìn)行初步排序;在此根底上,再按次低位關(guān)鍵字進(jìn)一步排序,以此類推,由低位到高位,由此關(guān)鍵字到主關(guān)鍵字,每一趟排序都在前一趟排序的根底上,直到按最高位關(guān)鍵對記錄進(jìn)行排序后,基數(shù)排序完成.在基數(shù)排序中,基數(shù)是各個(gè)關(guān)鍵只的取值范

7、圍.假設(shè)待排序的記錄是十進(jìn)制,那么基數(shù)是10;假設(shè)待排序的記錄是由假設(shè)干個(gè)字母組成的單詞,那么基數(shù)為26,也就是說,從最右邊的字母開始對記錄進(jìn)行排序,每次排序都將待排序記錄分成26組,但在此問題中,車牌號是由漢字,字母以及數(shù)字組成,假設(shè)直接進(jìn)行排序,那么需要分成34組,為了提升算法的空間性能,可以將漢字及字母轉(zhuǎn)換為十進(jìn)制數(shù)后再進(jìn)行基數(shù)排序.例如:一組記錄的關(guān)鍵字為:(278,109,63,930,589,184,505,269,8,83)可以看出,這組關(guān)鍵字與以前說過的用來排序的關(guān)鍵字并無差異,且也是針對但關(guān)鍵字對一組記錄進(jìn)行排序.但在基數(shù)排序中,我們可以將單關(guān)鍵字看成由假設(shè)干個(gè)關(guān)鍵字復(fù)合而成

8、.上述這組關(guān)鍵字的值都在0999的范圍內(nèi),我們可以把一個(gè)數(shù)位上的十進(jìn)制數(shù)字看成是一個(gè)關(guān)鍵字,即將關(guān)鍵字K看成由3個(gè)關(guān)鍵K0,K,K2組成.其中,K0是百位上的數(shù)字,K是十位上白數(shù)字,K2是個(gè)位上的數(shù)字.由于十進(jìn)制的基數(shù)是10,所以,每個(gè)蘇偉山的數(shù)字都可能是09中的任何一個(gè).我們先將關(guān)鍵字/來分配所有參與排序的元素,將Y=0的元素防在一組、K2=1的元素放在一組、Y=9的元素放在一組.這樣,將上述一組元素分成10組,如下(a)圖所示.然后,再將K2的值由0到9的順序收集各組元素,形成序列(930,063,083,184,505,278,008,109,589,269).對上述序列中的元素再按關(guān)鍵

9、字K1來分配,也分成10組,如下(b)圖所示.然后,再按K1的值由0到9的順序收集各組元素,形成序列(505,008,109,930,063,269,278,083,184,589).對該序列中的元素再按關(guān)鍵字K0來分配,分成如下(c)圖所示的10組.然后按K0的值由09的順序收集各組元素,形成序列(008,063,083,109,184,267,278,505,589,930).這時(shí),該序列已經(jīng)變成了一個(gè)有序序列.一趟分配前的一組元素(008,063,083,109,184,267,278,505,589,930)269083008589930063184505278109k2=0k2=1k

10、2=2k2=3k2=4k2=5k2=6k2=7k2=8k2=9(a)、按個(gè)位數(shù)大小將元素分成10組一趟分配后的一組元素(930,063,083,184,505,278,008,109,589,269)109589008269184505930063278083k=0k1=1k1=2k1=3k1=4k1=5k1=6k1=7k1=8k1=9(b)、按十位數(shù)大小將元素分成10組二趟收集后的元素序列(505,008,109,930,063,269,278,083,184,589)063184278589008109269505K0=0k0=1k0=2k0=3k0830=4930k0=5k0=6k0=7

11、k0=8k0=9(c)、按百位數(shù)大小將元素分成10組三趟收集后的元素序列(008,063,084,109,184,269,278,505,589,930)2、二分查找的算法思想:(1)、將表中間位置記錄的關(guān)鍵字與給定K值比擬,如果兩者相等,那么查找成功.(2)、如果兩者不等,利用中間位置記錄將表分成前、后兩個(gè)子表,如果中間位置記錄的關(guān)鍵字大于給定值,那么進(jìn)一步查找前一子表,否那么進(jìn)一步查找后后一子表.(3)、重復(fù)以上過程,直到找到滿足條件的記錄,那么查找成功,或者直到分解出的子表不存在為止,此時(shí)查找不成功.例如對一有序的數(shù)組a(1,2,3,4,5,6,7,8,9)進(jìn)行查找數(shù)key=6;首先定義

12、low=0,high=8,mid=(low+high)/2=4;第一步:將amid與key比擬,我們發(fā)現(xiàn)amid<key,令low=mid+1=5;mid=(low+high)/2=6第二步:將amid與key比擬,我們發(fā)現(xiàn)amid>key,此時(shí)再令high=mid-1=5;mid=(low+high)/2=5第三步:將amid與key比擬,此時(shí)amid=key,查找結(jié)束,返回mid;第四步:如果仍未找到,那么繼續(xù)進(jìn)行,直到low>high,此時(shí)返回-1,查找失敗;3、主要函數(shù)及功能1 .voidRadixsort(SLinkList*l)/基數(shù)排序/Length個(gè)記錄存放在

13、數(shù)組r中,執(zhí)行本算法進(jìn)行基數(shù)排序后,鏈表中的記錄將按關(guān)鍵字從小到大的順序鏈接.intn=l->length;zimuhead,tail;shuziheads,tails;for(inti=0;i<=n-1;i+)l->ri.next=i+1;l->rn.next=0;for(i=6;i>2;i-)/下標(biāo)大的為低位,從低位開始調(diào)用分配函數(shù)/調(diào)用收集函數(shù)調(diào)用分配函數(shù)調(diào)用收集函數(shù)Distribute_s(l->r,i,heads,tails);/Collect_s(l->r,heads,tails);Distribute_z(l->r,2,head,t

14、ail);/Collect_z(l->r,head,tail);/for(i=1;i>=0;i-)Distribute_s(l->r,i,heads,tails);Collects(l->r,heads,tails);2 .VoidDistribute_s(RecordTyper,inti,shuzihead,shuzitail)/記錄數(shù)組r中已按低位關(guān)鍵字keyi+1,keyd進(jìn)行低位優(yōu)先排序,本算法按第i個(gè)關(guān)鍵字keyi建立10個(gè)隊(duì)列,同一個(gè)隊(duì)列中記錄的keyi相同.Headj和tailj分別指向各自隊(duì)列中第一個(gè)和最后一個(gè)記錄(j=0,1,2,-9).headj=0

15、表示相應(yīng)隊(duì)列為空隊(duì)列./*_s表示對數(shù)字進(jìn)行的操作.在程序中還有_z表示對字母的操作*intj,p;for(j=0;j<=隊(duì)列的個(gè)數(shù);j+)初始化隊(duì)列隊(duì)列的頭指針=0;全部為0對歹的尾指針=0;全部為0)p=第一個(gè)數(shù)據(jù)在數(shù)組中的位置while(第一個(gè)數(shù)據(jù)在數(shù)組中的位置!=0)上=第一個(gè)數(shù)據(jù)的第i位在第幾個(gè)隊(duì)列if(頭指針二=0)頭指針二第一個(gè)數(shù)據(jù)載表中的位置;else該隊(duì)列已有數(shù)據(jù)的下一個(gè)位置=p否那么將該數(shù)在靜態(tài)鏈表中的位置放在在同一個(gè)隊(duì)列的數(shù)據(jù)之后尾指針=p;tialj=該數(shù)在靜態(tài)鏈表中的位置p=下一個(gè)數(shù)據(jù)的位置值;)voidDistribute_z(RecordTyper,inti

16、,zimuhead,zimutail)intp,j;for(j=0;j<=25;j+)(headj=0;tailj=0;)p=r0.next;while(p!=0)(j=int(int(rp.keyi)-'A');if(headj=0)headj=p;elsertailj.next=p;tailj=p;p=rp.next;)3 .Voidcollect_s(RecordTyper,shuzihead,shuzitail)/本算法從.IU9掃描個(gè)隊(duì)列將所有非空隊(duì)列首尾相接,重新鏈接成一個(gè)鏈表(intj=0,t;while(headj=0)+j;/找第一個(gè)不為空的隊(duì)列r0.n

17、ext=headj;t=tailj;/把headj給第一個(gè)數(shù)據(jù)的位置while(j<9)(+j;while(j<9)&&(headj=0)找到不為0的隊(duì)列+j;if(headj!=0)(rt.next=headj;)rt.next=0;/使最后一個(gè)數(shù)的next=0)voidCollect_z(RecordTyper,zimuhead,zimutail)字母類型收集重新構(gòu)成鏈表(intj=0,t;while(headj=0)+j;r0.next=headj;t=tailj;while(j<25)(+j;while(j<25)&&(headj

18、=0)+j;if(headj!=0)(rt.next=headj;t=tailj;)rt.next=0;)4 .voidzl(SLinkList*l)整理鏈表順序(intp,q;RecordTypebuf;p=第一個(gè)元素在表中的位置;for(inti=1;i<表的長度;i+)while(p<i)p=第p個(gè)元素的下一個(gè)數(shù)在表中的位置;4=第p個(gè)元素的下一個(gè)數(shù)在表中的位置;if(p!=i)(皿£=第p個(gè)元素的地址;第p個(gè)元素的地址=第i個(gè)元素的地址;交換第i個(gè)元素的地址與第p個(gè)元素的地址第i個(gè)元素的地址=buf;第i個(gè)元素的下一個(gè)數(shù)在表中的位置=p;)p=q;)1. intB

19、insrch_bin(SLListl,chars)/二分查找,s為要找的內(nèi)容(定義整形三個(gè)位置變量mid,high,low,并能后兩個(gè)賦初值;(mid表示中間,high表示高位,low表示低位)While(low<=high)(用mid=(high+low)/2求得mid的值;如果L->rmid.key=s(要查找的內(nèi)容);那么返回它在表中的位置mid如果L->rmid.key<s;那么將最低位變?yōu)閙id+1;如果L->rmid.key>s;那么將最高位變?yōu)閙id1)執(zhí)行到些證實(shí)在表中沒找到要查找的內(nèi)容,返回0;)6. voidGetData(SLinkLi

20、st*L)/從鍵盤獲得數(shù)據(jù),存在表L中.(定義輸入的狀態(tài)變量x;x不為0既認(rèn)為要輸入定義記錄個(gè)數(shù)的整型變量j;輸出輸入的提示信息;scanf("%d",&x);輸入x的狀態(tài);while(x)x=0;printf("t車牌號:");輸出提示scanf("%s",&(L->rj.key);輸入節(jié)點(diǎn)中對應(yīng)的量printf("t車主名:");scanf("%s",&(L->);printf("t車名:");scanf("%s

21、",&(L->rj.carname);printf("*按任意不為0'的數(shù)字繼續(xù)錄入*:");scanf("%d",&x);if(x)j+;L->length=j;將個(gè)數(shù)賦給表的長度7. voidprint(SLinkList*L)遍歷靜態(tài)表(inti;printf("t");printf("車牌號車主名車名n");for(i=1;i<=鏈表的長度;i+)(輸出各局部對應(yīng)的值;)8. intEqual(charkey1口,charkey2)/折半查找輔助比擬,判斷

22、是否想等,只比擬前7位,第八位是結(jié)束符(for(inti=0;i<7;i+)(if(key1i!=key2i)任意一個(gè)不相等就不相等,返回0return0;)return1;執(zhí)行到這說明都相等,返回不為0的值)9. intxiao(charkey1口,charkey2口)/折半查找輔助比擬,判斷較小(for(inti=0;i<7;i+)(if(key1i<key2i)return1;elseif(key1i>key2i)return0;)return0;四設(shè)計(jì)與調(diào)試分析1 .調(diào)試輸出菜單:這局部執(zhí)行成功,為了能夠輸出對稱、格式整潔,所以要不斷的調(diào)試、修改直到滿意.2 .

23、調(diào)試功能1添加車輛信息:從鍵盤輸入以下幾組數(shù)據(jù);車牌號車主名車名按提示輸入,以0結(jié)束輪作輸入輸入成功,退出輸入功能也成功,但是要注意在輸入時(shí),每個(gè)量中間不能輸入空格.這樣會(huì)使程序默認(rèn)下個(gè)量輸入結(jié)束.3 .實(shí)現(xiàn)功能2輸出所有車輛信息:輸出的車輛信息與輸入和一致.此部部執(zhí)行成功.4 .實(shí)現(xiàn)功能3按車牌號進(jìn)行排序從小到大根據(jù)2.進(jìn)行輸入:在這里也套用了功能2,從結(jié)果可以看出排序成功.5 .實(shí)現(xiàn)功能4按車牌號查找車輛:在上面的根底上分別查找01A1234和02A1234由此可能看出兩局部都執(zhí)行成功6 .實(shí)現(xiàn)功能5退出程序退出程序成功.五用戶手冊1、運(yùn)行程序,根據(jù)菜單項(xiàng)選擇擇要實(shí)現(xiàn)的功能,輸入相應(yīng)的數(shù)字

24、.1:輸入數(shù)據(jù);2:輸出所有元素3:實(shí)現(xiàn)鏈?zhǔn)交鶖?shù)排序;4:用二分查找在表中按車牌號查找;0:退出程序2、中選擇功能1后,根據(jù)提示輸入相應(yīng)的信息,在輸入時(shí),每個(gè)字符串之間不要有空格.按0退出輸入.在輸入時(shí)輸入2位數(shù)字,一個(gè)大寫字母,然后再輸入四位數(shù)字3、中選擇功能2后,會(huì)按格式輸出所有節(jié)點(diǎn)信息.4、中選擇功能3后.會(huì)輸出進(jìn)行鏈?zhǔn)脚判蚝蟮乃泄?jié)點(diǎn)信息.5、領(lǐng)先擇功能4后,請輸入您要查找車輛的車牌號.程序會(huì)輸入相應(yīng)信息.6、在沒有執(zhí)行第4步前,不能執(zhí)行第五步.7、退出程序請按0,然后安任意鍵會(huì)關(guān)閉運(yùn)行窗口.六測試成果七附錄源程序清單#include<stdio.h>#defineKEY_

25、SIZE8#defineLIST_SIZE100typedefstruct(charkeyKEY_SIZE;charname10;charcarname20;intnext;RecordType;typedefstruct(RecordTyperLIST_SIZE;intlength;intkeynum;SLinkList;typedefintshuzi10;typedefintzimu26;voidInitSLList(SLinkList*L)(L->length=0;L->keynum=7;voidDistribute_s(RecordTyper,inti,shuzihead,

26、shuzitail)/數(shù)字分酉己(intj,p;for(j=0;j<=9;j+)(p=r0.next;while(p!=0)(j=int(rp.keyi-'0');if(headj=0)headj=p;elsertailj.next=p;tailj=p;p=rp.next;)voidDistribute_z(RecordTyper,inti,zimuhead,zimutail)(intp,j;for(j=0;j<=25;j+)(headj=0;tailj=0;)p=r0.next;while(p!=0)(j=int(int(rp.keyi)-'A')

27、;if(headj=0)headj=p;elsertailj.next=p;tailj=p;p=rp.next;voidCollect_s(RecordTyper,shuzihead,shuzitail)收集重新構(gòu)成鏈表intj=0,t;while(headj=0)+j;r0.next=headj;t=tailj;while(j<9)+j;while(j<9)&&(headj=0)+j;if(headj!=0)rt.next=headj;t=tailj;rt.next=0;voidCollect_z(RecordTyper,zimuhead,zimutail)字母類

28、型收集重新構(gòu)成鏈表intj=0,t;while(headj=0)+j;r0.next=headj;t=tailj;while(j<25)+j;while(j<25)&&(headj=0)+j;if(headj!=0)rt.next=headj;t=tailj;rt.next=0;voidRadixsort(SLinkList*l)基數(shù)排序intn=l->length;zimuhead,tail;shuziheads,tails;for(inti=0;i<=n-1;i+)l->ri.next=i+1;l->rn.next=0;for(i=6;i

29、>2;i-)/下標(biāo)大的為低位,從低位開始Distribute_s(l->r,i,heads,tails);/調(diào)用分配函數(shù)Collect_s(l->r,heads,tails);/調(diào)用收集函數(shù)Distribute_z(l->r,2,head,tail);調(diào)用分配函數(shù)Collect_z(l->r,head,tail);調(diào)用收集函數(shù)Distribute_s(l->r,i,heads,tails);Collect_s(l->r,heads,tails);)voidzl(SLinkList*l)(intp,q;RecordTypebuf;p=l->r0.n

30、ext;for(inti=1;i<l->length;i+)(while(p<i)p=l->rp.next;q=l->rp.next;if(p!=i)(buf=l->rp;l->rp=l->ri;l->ri=buf;l->ri.next=p;)p=q;)/進(jìn)行排序后整理順序/p指向第一個(gè)記錄的當(dāng)前位置/找到第i個(gè)記錄,并用p指示其在表中的當(dāng)前位置/交換p與i/使得被移走的記錄使得以后可以由while循環(huán)找回voidGetData(SLinkList*L)/從鍵盤獲得數(shù)據(jù)intx;intj=1;printf("請輸入車牌號及車

31、主名與車名n");printf("例如:01B1234");printf("n");printf("如要錄入請按任意不為0'的數(shù)字,退出此功能請按0':");scanf("%d",&x);printf("n");while(x)x=0;printf("t車牌號:");scanf("%s",&(L->rj.key);printf("t車主名:");scanf("%s",&

32、amp;(L->);printf("t車名:");scanf("%s",&(L->rj.carname);printf("*按任意不為0'的數(shù)字繼續(xù)錄入*:");scanf("%d",&x);if(x)j+;L->length=j;voidprint(SLinkList*L)輸出出所有元素inti;printf("t");printf("車牌號車主名車名)printf("n");for(i=1;i<=L-

33、>length;i+)printf("t%s",L->ri.key);printf("%s",(L->);printf("%sn",L->ri.carname);intEqual(charkey1口,charkey2)/折半查找輔助比擬,判斷是否想等,只比擬前7位,第八位是結(jié)束符for(inti=0;i<7;i+)if(key1i!=key2i)return0;return1;intxiao(charkey1口,charkey2)/折半查找輔助比擬,mid位的數(shù)據(jù)小于查找的數(shù)for(inti

34、=0;i<7;i+)if(key1i<key2i)return1;elseif(key1i>key2i)return0;return0;intBinsrch(SLinkList*L,chars8)按車牌號,(.key)折半查找intmid,high,low;low=1;high=L->length;while(low<=high)(mid=(high+low)/2;if(Equal(s,L->rmid.key)return(mid);elseif(xiao(s,L->rmid.key)high=mid-1;elselow=mid+1;return(0)

35、;voidnoun()/輸出提示操作(printf("ttn");printf("tt|車牌信息治理系統(tǒng)In");printf("tt|n");printf("tt|1)添加車輛信息In");printf("tt|n");printf("tt|2)輸出所有車輛信息|n");printf("tt|n");printf("tt|3)按車牌號進(jìn)行排序|n");printf("tt|n");printf("tt|4

36、)按車牌號查找車輛|n");printf("tt|n");printf("tt|0)退出程序|n");printf("ttn");voidmain()(inti;SLinkListl;noun();提示doprintf("*n");printf"*請選擇相應(yīng)功能對應(yīng)的數(shù)字*:"scanf("%d",&i);switch(i)(case 1:InitSLList(&l);GetData(&l);break;case 2:print(&l);break;case 3:Radixsort(&l);zl(&l);printf("*排序后的順序?yàn)椋?、);printf("n");print(&l);break;case 4:intf;chars7;I*printf("*請輸入要查找的車牌號*");scanf("%s",&s);f=Binsrch(&l,s);if(f)(printf("t查找的車在表中的位置為:%dn",Binsrch(&l,s);printf(&q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論