版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p> 11級(jí)電氣信息類專業(yè)</p><p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p><b> 2012年9月</b></p><p><b> 設(shè)計(jì)題目(一)</b>
2、</p><p><b> 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)</b></p><p><b> 任務(wù)</b></p><p> 參加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1~m,女子m+1~m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分
3、分別為:5、3、2;哪些項(xiàng)目取前五名或前三名由學(xué)生自己設(shè)定。(m<=20,n<=20)</p><p><b> 功能要求</b></p><p> 1) 可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;2) 能統(tǒng)計(jì)各學(xué)??偡郑?) 可以按學(xué)校編號(hào)、學(xué)校總分、男女團(tuán)體總分排序輸出;4) 可以按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;</p><
4、;p> 5) 可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p><b> 需求分析</b></p><p> 由用戶輸入各校信息,然后根據(jù)其他用戶需要求,查看各個(gè)信息。</p><p><b> 概要設(shè)計(jì)</b></p><p> typedef struct </p
5、><p><b> {</b></p><p> int num;//學(xué)校編號(hào)</p><p> int score;//學(xué)校總分</p><p> int *item;//該學(xué)校參加的項(xiàng)目編號(hào)</p><p> int itemnum;//該學(xué)校參加的項(xiàng)目總數(shù)</p><
6、;p> int mscore;//男團(tuán)體總分</p><p> int wscore;//女團(tuán)體總分</p><p><b> }school;</b></p><p> typedef struct </p><p><b> {</b></p><p>
7、 int num;//參加該項(xiàng)目的學(xué)校數(shù)</p><p> int topnum;//取前幾名</p><p> int rank[5];//前幾名的學(xué)校編號(hào)</p><p><b> }item;</b></p><p> void init(int n,int m,int w);//初始化函數(shù),用來初始化it
8、和sc結(jié)構(gòu)體數(shù)組其中的數(shù)值;</p><p> void inputschoolscore(int j,int topnum,int i,int m);//統(tǒng)計(jì)計(jì)算各學(xué)校各項(xiàng)總分</p><p> void input();//輸入信息函數(shù),輸入各個(gè)項(xiàng)目的信息以及參加學(xué)校的情況</p><p> void output1();//按學(xué)校編號(hào)輸出</p&g
9、t;<p> void output2();//按學(xué)校總分輸出</p><p> void output3();//按學(xué)校男團(tuán)輸出</p><p> void output4();//按學(xué)校女團(tuán)輸出</p><p> void output();//輸出函數(shù),具體功能調(diào)用output1,output2,output3,output4完成<
10、/p><p> void query1();//按學(xué)校編號(hào)查詢</p><p> void query2();//按項(xiàng)目編號(hào)查詢</p><p> void query();//查詢信息,具體功能調(diào)用query1,query2完成</p><p><b> 程序調(diào)用關(guān)系如下:</b></p><p
11、><b> 詳細(xì)設(shè)計(jì)</b></p><p> #include<stdio.h></p><p> #include<malloc.h></p><p> #include<string.h></p><p> #include<conio.h></
12、p><p> #include<process.h></p><p> #include<stdlib.h></p><p> typedef struct </p><p><b> {</b></p><p> int num;//學(xué)校編號(hào)</p>
13、<p> int score;//學(xué)??偡?lt;/p><p> int *item;//該學(xué)校參加的項(xiàng)目編號(hào)</p><p> int itemnum;//該學(xué)校參加的項(xiàng)目總數(shù)</p><p> int mscore;//男團(tuán)體總分</p><p> int wscore;//女團(tuán)體總分</p><p&g
14、t;<b> }school;</b></p><p> school *sc;//使用全局指針變量動(dòng)態(tài)分配內(nèi)存儲(chǔ)存學(xué)校信息</p><p> typedef struct </p><p><b> {</b></p><p> int num;//參加該項(xiàng)目的學(xué)校數(shù)</p>
15、<p> int topnum;//取前幾名</p><p> int rank[5];//前幾名的學(xué)校編號(hào)</p><p><b> }item;</b></p><p> item *it;//使用全局指針變量動(dòng)態(tài)分配內(nèi)存儲(chǔ)存項(xiàng)目信息</p><p> int n,m,w,flag2=0;//
16、n為學(xué)校數(shù)目,m為男子項(xiàng)目數(shù)目,w為女子項(xiàng)目數(shù)目,flag2為確定是否已經(jīng)輸入信息</p><p> void init(int n,int m,int w);//初始化函數(shù),用來初始化it和sc結(jié)構(gòu)體數(shù)組其中的數(shù)值;</p><p> void inputschoolscore(int j,int topnum,int i,int m);//統(tǒng)計(jì)計(jì)算各學(xué)校各項(xiàng)總分</p>
17、<p> void input();//輸入信息函數(shù),輸入各個(gè)項(xiàng)目的信息以及參加學(xué)校的情況</p><p> void output1();//按學(xué)校編號(hào)輸出</p><p> void output2();//按學(xué)??偡州敵?lt;/p><p> void output3();//按學(xué)校男團(tuán)輸出</p><p> voi
18、d output4();//按學(xué)校女團(tuán)輸出</p><p> void output();//輸出函數(shù),具體功能調(diào)用output1,output2,output3,output4完成</p><p> void query1();//按學(xué)校編號(hào)查詢</p><p> void query2();//按項(xiàng)目編號(hào)查詢</p><p> v
19、oid query();//查詢信息,具體功能調(diào)用query1,query2完成</p><p> //以下三個(gè)函數(shù)分別是qsort函數(shù)的參數(shù),qsort是庫中的排序函數(shù),其功能是快速排序</p><p> int compare1(const void *a,const void *b)//按總分排序 </p><p><b> {</b&g
20、t;</p><p> return ((school*)b)->score-((school*)a)->score;</p><p><b> }</b></p><p> int compare2(const void *a,const void *b)//按男團(tuán)總分排序 </p><p><
21、b> {</b></p><p> return ((school*)b)->mscore-((school*)a)->mscore;</p><p><b> }</b></p><p> int compare3(const void *a,const void *b)//按女團(tuán)總分排序 </p&
22、gt;<p><b> {</b></p><p> return ((school*)b)->wscore-((school*)a)->wscore;</p><p><b> }</b></p><p> int main()</p><p><b>
23、 {</b></p><p> int flag1;//flag1功能選擇</p><p> printf("============歡迎使用============\n\n\n");</p><p><b> while(1)</b></p><p><b> {&l
24、t;/b></p><p> printf("**************運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*************\n\n\n");</p><p> printf(" 1.輸入信息\n");</p><p> printf(" 2.輸出信息\n&q
25、uot;);</p><p> printf(" 3.查詢信息\n");</p><p> printf(" 4.退出系統(tǒng)\n");</p><p> scanf("%d",&flag1);</p><p> swi
26、tch (flag1)</p><p><b> {</b></p><p><b> case 1:</b></p><p><b> input();</b></p><p><b> break;</b></p><p&g
27、t;<b> case 2:</b></p><p><b> if(flag2)</b></p><p><b> output();</b></p><p><b> else</b></p><p> printf("還沒有輸入信
28、息!請(qǐng)先輸入信息!\n\n");</p><p><b> break;</b></p><p><b> case 3:</b></p><p><b> if(flag2)</b></p><p><b> query();</b>&
29、lt;/p><p><b> else</b></p><p> printf("還沒有輸入信息!請(qǐng)先輸入信息!\n\n");</p><p><b> break;</b></p><p><b> case 4:</b></p><
30、;p> printf("謝謝使用!\n");</p><p><b> exit(0);</b></p><p><b> default:</b></p><p> printf("沒有相應(yīng)功能,請(qǐng)重新輸入!\n");</p><p><
31、;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void input()</p><p><b> {</b></p><p><b> flag2
32、=1;</b></p><p> int i,j,num,k=1;</p><p> printf("請(qǐng)輸入學(xué)校個(gè)數(shù):\n");</p><p> scanf("%d",&n);</p><p> sc=(school*)malloc((n+1)*sizeof(school)
33、);</p><p> printf("請(qǐng)輸入男子項(xiàng)目和女子項(xiàng)目的個(gè)數(shù):\n");</p><p> scanf("%d%d",&m,&w);</p><p> it=(item*)malloc((m+w+1)*sizeof(item));</p><p> init(n,m,w
34、);</p><p> for(i=1;i<=w+m;++i)</p><p><b> {</b></p><p> printf("項(xiàng)目%d:\n",i);</p><p> printf("取前幾名(3或者5):\n");</p><p>
35、; scanf("%d",&it[i].topnum);</p><p> for(j=1;j<=it[i].topnum&&j<=n;++j)</p><p><b> {</b></p><p> printf("第%d名的學(xué)校編號(hào):",j);</p&
36、gt;<p> scanf("%d",&it[i].rank[j]);</p><p> it[i].num++;</p><p> sc[it[i].rank[j]].item[++sc[it[i].rank[j]].itemnum]=i;</p><p> inputschoolscore(j,it[i].top
37、num, i, m);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void init(int n,int m,int w)//初始化各個(gè)儲(chǔ)存數(shù)組</p><p&
38、gt;<b> {</b></p><p><b> int i;</b></p><p> for(i=1;i<=n;++i)</p><p><b> {</b></p><p> sc[i].itemnum=0;</p><p>
39、 sc[i].num=i;</p><p> sc[i].mscore=0;</p><p> sc[i].score=0;</p><p> sc[i].wscore=0;</p><p> sc[i].item=(int *)malloc((w+m+1)*sizeof(int));</p><p><
40、b> }</b></p><p> for(i=1;i<=m+w;++i)</p><p> it[i].num=0;</p><p><b> }</b></p><p> void inputschoolscore(int j,int topnum,int i,int m)//保存輸
41、入的信息</p><p><b> {</b></p><p> if(topnum==3)</p><p><b> {</b></p><p> switch (j)</p><p><b> {</b></p><p&
42、gt;<b> case 1:</b></p><p><b> if(i<=m)</b></p><p> sc[it[i].rank[j]].mscore+=5;</p><p><b> else</b></p><p> sc[it[i].rank[j]
43、].wscore+=5;</p><p> sc[it[i].rank[j]].score+=5;</p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> if(i<=m)</b></p&g
44、t;<p> sc[it[i].rank[j]].mscore+=3;</p><p><b> else</b></p><p> sc[it[i].rank[j]].wscore+=3;</p><p> sc[it[i].rank[j]].score+=3;</p><p><b>
45、 break;</b></p><p><b> case 3:</b></p><p><b> if(i<=m)</b></p><p> sc[it[i].rank[j]].mscore+=2;</p><p><b> else</b><
46、;/p><p> sc[it[i].rank[j]].wscore+=2;</p><p> sc[it[i].rank[j]].score+=2;</p><p><b> break;</b></p><p><b> }</b></p><p><b>
47、 }</b></p><p><b> else</b></p><p><b> {</b></p><p> switch (j)</p><p><b> {</b></p><p><b> case 1:<
48、/b></p><p><b> if(i<=m)</b></p><p> sc[it[i].rank[j]].mscore+=7;</p><p><b> else</b></p><p> sc[it[i].rank[j]].wscore+=7;</p>&
49、lt;p> sc[it[i].rank[j]].score+=7;</p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> if(i<=m)</b></p><p> sc[it[i].r
50、ank[j]].mscore+=5;</p><p><b> else</b></p><p> sc[it[i].rank[j]].wscore+=5;</p><p> sc[it[i].rank[j]].score+=5;</p><p><b> break;</b></p&
51、gt;<p><b> case 3:</b></p><p><b> if(i<=m)</b></p><p> sc[it[i].rank[j]].mscore+=3;</p><p><b> else</b></p><p> sc[it
52、[i].rank[j]].wscore+=3;</p><p> sc[it[i].rank[j]].score+=3;</p><p><b> break;</b></p><p><b> case 4:</b></p><p><b> if(i<=m)</b&
53、gt;</p><p> sc[it[i].rank[j]].mscore+=2;</p><p><b> else</b></p><p> sc[it[i].rank[j]].wscore+=2;</p><p> sc[it[i].rank[j]].score+=2;</p><p&g
54、t;<b> break;</b></p><p><b> case 5:</b></p><p><b> if(i<=m)</b></p><p> sc[it[i].rank[j]].mscore+=1;</p><p><b> else&l
55、t;/b></p><p> sc[it[i].rank[j]].wscore+=1;</p><p> sc[it[i].rank[j]].score+=1;</p><p><b> break;</b></p><p><b> }</b></p><p>
56、;<b> }</b></p><p><b> }</b></p><p> void output()</p><p><b> {</b></p><p><b> int flag;</b></p><p><
57、;b> while(1)</b></p><p><b> {</b></p><p> printf("輸出信息:\n");</p><p> printf("1.按學(xué)校編號(hào)輸出\n");</p><p> printf("2.按學(xué)??偡州敵?/p>
58、\n");</p><p> printf("3.按男團(tuán)總分輸出\n");</p><p> printf("4.按女團(tuán)總分輸出\n");</p><p> printf("0.返回主菜單\n");</p><p> scanf("%d",&am
59、p;flag);</p><p> switch (flag)</p><p><b> {</b></p><p><b> case 1:</b></p><p> output1();</p><p><b> break;</b><
60、;/p><p><b> case 2:</b></p><p> output2();</p><p><b> break;</b></p><p><b> case 3:</b></p><p> output3();</p>
61、<p><b> break;</b></p><p><b> case 4:</b></p><p> output4();</p><p><b> break;</b></p><p><b> case 0:</b><
62、/p><p> printf("\n\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b
63、></p><p> void output1()</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=1;i<=n;++i)</p><p><b> {</b>&l
64、t;/p><p> printf("學(xué)校%d:\n",i);</p><p> printf("學(xué)??偡?%d\n",sc[i].score);</p><p> printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p> printf("女團(tuán)
65、總分:%d\n\n\n",sc[i].wscore);</p><p><b> }</b></p><p><b> }</b></p><p> void output2()</p><p><b> {</b></p><p>&
66、lt;b> int i;</b></p><p> qsort(sc+1,n,sizeof(school),compare1);</p><p> for(i=1;i<=n;++i)</p><p><b> {</b></p><p> printf("學(xué)校%d:\n&quo
67、t;,sc[i].num);</p><p> printf("學(xué)校總分:%d\n",sc[i].score);</p><p> printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p> printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</
68、p><p><b> }</b></p><p><b> }</b></p><p> void output3()</p><p><b> {</b></p><p><b> int i;</b></p>
69、<p> qsort(sc+1,n,sizeof(school),compare2);</p><p> for(i=1;i<=n;++i)</p><p><b> {</b></p><p> printf("學(xué)校%d:\n",sc[i].num);</p><p>
70、printf("學(xué)??偡?%d\n",sc[i].score);</p><p> printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p> printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</p><p><b> }</b>
71、;</p><p><b> }</b></p><p> void output4()</p><p><b> {</b></p><p><b> int i;</b></p><p> qsort(sc+1,n,sizeof(schoo
72、l),compare3);</p><p> for(i=1;i<=n;++i)</p><p><b> {</b></p><p> printf("學(xué)校%d:\n",sc[i].num);</p><p> printf("學(xué)??偡?%d\n",sc[i].sc
73、ore);</p><p> printf("男團(tuán)總分:%d\n",sc[i].mscore);</p><p> printf("女團(tuán)總分:%d\n\n\n",sc[i].wscore);</p><p><b> }</b></p><p><b> }<
74、;/b></p><p> void query()</p><p><b> {</b></p><p><b> int flag;</b></p><p><b> while(1)</b></p><p><b> {&
75、lt;/b></p><p> printf("1.按學(xué)校編號(hào)查詢\n");</p><p> printf("2.按項(xiàng)目編號(hào)查詢\n");</p><p> printf("0.返回主菜單\n");</p><p> scanf("%d",&
76、;flag);</p><p> printf("\n\n\n");</p><p> switch (flag)</p><p><b> {</b></p><p><b> case 1:</b></p><p><b> que
77、ry1();</b></p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> query2();</b></p><p><b> break;</b></p&g
78、t;<p><b> case 0:</b></p><p> printf("\n\n\n");</p><p><b> return ;</b></p><p><b> }</b></p><p><b> }<
79、;/b></p><p><b> }</b></p><p> void query1()</p><p><b> {</b></p><p> int num,flag,i,j;</p><p><b> while(1)</b>&
80、lt;/p><p><b> {</b></p><p> printf("1.輸入學(xué)校編號(hào)\n");</p><p> printf("2.返回上一級(jí)\n");</p><p> scanf("%d",&flag);</p><
81、p> switch (flag)</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("請(qǐng)輸入學(xué)校編號(hào):\n");</p><p> scanf("%d",&num);
82、</p><p> if(num>n||n<=0)</p><p><b> {</b></p><p> printf("對(duì)不起!沒有該學(xué)校!\n\n");</p><p><b> }</b></p><p><b>
83、else</b></p><p><b> {</b></p><p> for(i=1;i<=n;++i)</p><p> if(sc[i].num==num)</p><p><b> {</b></p><p> printf("
84、學(xué)校編號(hào):%d\n",num);</p><p> printf("該學(xué)校分別參加了:\n");</p><p> for(j=1;j<=sc[i].itemnum;++j)</p><p><b> {</b></p><p> printf("項(xiàng)目%d:\n&qu
85、ot;,sc[i].item[j]);</p><p> printf("該項(xiàng)目取前%d\n\n",it[sc[i].item[j]].topnum);</p><p><b> }</b></p><p> printf("\n\n\n");</p><p><b&g
86、t; break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> case 2:</b></p><p
87、> printf("\n\n\n");</p><p><b> return ;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&g
88、t;<p> void query2()</p><p><b> {</b></p><p> int num,flag,i;</p><p><b> while(1)</b></p><p><b> {</b></p><p&
89、gt; printf("1.輸入項(xiàng)目編號(hào)\n");</p><p> printf("2.返回上一級(jí)\n");</p><p> scanf("%d",&flag);</p><p> switch (flag)</p><p><b> {</b&
90、gt;</p><p><b> case 1:</b></p><p> printf("請(qǐng)輸入項(xiàng)目編號(hào):\n");</p><p> scanf("%d",&num);</p><p> if(num<=0||num>m+w)</p>
91、<p> printf("對(duì)不起!沒有該項(xiàng)目!\n\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("參加該項(xiàng)目的學(xué)校有:\n");</p><p> for(i=
92、1;i<=it[num].num;++i)</p><p> printf("%d ",it[num].rank[i]);</p><p> printf("\n\n\n");</p><p><b> }</b></p><p><b> case 2:&
93、lt;/b></p><p> printf("\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
94、t; }</b></p><p><b> 調(diào)試分析</b></p><p> 由于信息是動(dòng)態(tài)數(shù)組的形式儲(chǔ)存的,當(dāng)輸入的學(xué)校的個(gè)數(shù)小于3時(shí),輸出信息時(shí)會(huì)出錯(cuò),所以在結(jié)構(gòu)體中加入了num成員,表示參加該項(xiàng)目的學(xué)校的數(shù)目,這樣就解決問題了。</p><p> 在查詢時(shí),由于輸出信息時(shí),對(duì)數(shù)組的元素排序了,下標(biāo)已經(jīng)不再表示學(xué)校的編
95、號(hào),所以在結(jié)構(gòu)體中加入num成員,表示該學(xué)校的編號(hào),這樣在查詢時(shí)就不會(huì)出錯(cuò)了。</p><p><b> 用戶手冊(cè)</b></p><p> 1. 演示程序的運(yùn)行環(huán)境為Windows 2007系統(tǒng),Microsoft Visual Studio 6.0中的Microsoft Visual C++ 6.0中運(yùn)行。執(zhí)行文件為:運(yùn)動(dòng)會(huì).exe。</p>&
96、lt;p> 2.進(jìn)入演示程序后即顯示DOS形式的界面:</p><p> 選擇相應(yīng)功能后,系統(tǒng)會(huì)進(jìn)入相應(yīng)功能:</p><p><b> 選擇輸入信息后:</b></p><p><b> 選擇輸出信息后:</b></p><p> 根據(jù)相應(yīng)提示選擇相應(yīng)子功能。</p>
97、<p> 比如按學(xué)校編號(hào)輸出:</p><p> 其他功能類似,此處不再贅述。</p><p><b> 測(cè)試結(jié)果</b></p><p><b> 輸入信息:</b></p><p> ?。?)輸出信息,選擇按男團(tuán)總分輸出。</p><p> 選擇查詢
98、信息,按項(xiàng)目編號(hào)查詢</p><p><b> 退出系統(tǒng)</b></p><p><b> 設(shè)計(jì)題目(二)</b></p><p><b> 哈希表查找的設(shè)計(jì)</b></p><p><b> 任務(wù)</b></p><p>
99、 設(shè)哈希表長為20,用除留余數(shù)法構(gòu)造一個(gè)哈希函數(shù),以開放定址法中的線性探測(cè)再散列法作為解決沖突的方法,編程實(shí)現(xiàn)哈希表查找、插入和建立算法。</p><p><b> 功能要求</b></p><p> 能夠建立hash表。</p><p> 對(duì)于一個(gè)整數(shù),能夠?qū)崿F(xiàn)插入。</p><p> 對(duì)于一個(gè)整數(shù),能夠?qū)崿F(xiàn)
100、查找。</p><p><b> 需求分析</b></p><p> 本系統(tǒng)中,由用戶選擇相應(yīng)功能,可以插入、查找任意整數(shù),直至表滿。</p><p><b> 概要設(shè)計(jì)</b></p><p> typedef struct </p><p><b>
101、{</b></p><p> int e;//元素值</p><p> int flag;//標(biāo)志位</p><p><b> }hash;</b></p><p> void insert();//插入函數(shù)</p><p> void serch();//查詢函數(shù)</
102、p><p><b> 程序調(diào)用關(guān)系如下:</b></p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> typedef stru
103、ct </p><p><b> {</b></p><p> int e;//元素值</p><p> int flag;//標(biāo)志位</p><p><b> }hash;</b></p><p> int cnt;//當(dāng)前元素個(gè)數(shù)</p><
104、p> hash a[20];//哈希表</p><p> void insert();//插入函數(shù)</p><p> void serch();//查詢函數(shù)</p><p> int main()</p><p><b> {</b></p><p><b> int
105、i;</b></p><p> for(i=0;i<20;++i)//初始化標(biāo)志位</p><p> a[i].flag=0;</p><p> int flag;//功能選擇</p><p> printf("*************歡迎使用**********\n\n");</p>
106、;<p><b> while(1)</b></p><p><b> {</b></p><p> printf("1.插入元素\n");</p><p> printf("2.查找元素\n");</p><p> printf(&q
107、uot;3.退出系統(tǒng)\n");</p><p> scanf("%d",&flag);</p><p> switch(flag)</p><p><b> {</b></p><p><b> case 1:</b></p><p&
108、gt;<b> insert();</b></p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> serch();</b></p><p><b> break;&l
109、t;/b></p><p><b> case 3:</b></p><p> printf("謝謝使用!\n\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p
110、><b> }</b></p><p><b> }</b></p><p> void insert()</p><p><b> {</b></p><p> int element,e;//輸入元素值</p><p> int k
111、ey;//hash值</p><p><b> int i;</b></p><p> if(cnt>20)</p><p> printf("表已滿!無法插入!\n\n");</p><p><b> else</b></p><p>&l
112、t;b> {</b></p><p> printf("要插入的元素:\n");</p><p> scanf("%d",&e);</p><p><b> if(e<0)</b></p><p> element=-e;</p>
113、;<p> key=element%13;//計(jì)算hash值</p><p><b> i=key;</b></p><p> if(a[i].flag==0)</p><p><b> {</b></p><p><b> a[i].e=e;</b>&
114、lt;/p><p><b> ++cnt;</b></p><p> a[i].flag=1;</p><p> printf("\n\n");</p><p><b> }</b></p><p><b> else</b>&
115、lt;/p><p><b> {</b></p><p> while(i%20!=key&&a[i].flag&&a[i].e!=e)</p><p><b> ++i;</b></p><p> if(a[i].e==e)</p><p&g
116、t; printf("該值已存在!\n\n");</p><p> else if(i==key)</p><p> printf("表已滿!無法插入!\n\n");</p><p><b> else</b></p><p><b> {</b>&
117、lt;/p><p><b> a[i].e=e;</b></p><p><b> cnt++;</b></p><p> a[i].flag=1;</p><p> printf("\n\n");</p><p><b> }</b
118、></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void serch()</p><p><b> {</b></p>
119、;<p> int element,e;//輸入元素值</p><p> int key;//hash值</p><p><b> int i;</b></p><p> printf("要查找的元素:\n");</p><p> scanf("%d",&a
120、mp;e);</p><p><b> if(e<0)</b></p><p> element=-e;</p><p> key=element%13;//計(jì)算hash值</p><p><b> i=key;</b></p><p> if(a[i].fl
121、ag==0)</p><p><b> {</b></p><p> printf("該元素不存在\n\n");</p><p><b> }</b></p><p><b> else</b></p><p><b&g
122、t; {</b></p><p> if(a[i].e==e)</p><p> printf("該值存在!\n\n");</p><p><b> else</b></p><p><b> {</b></p><p><b&
123、gt; ++i;</b></p><p> while(a[i].flag&&a[i].e!=e&&i!=key)</p><p><b> ++i;</b></p><p> if(a[i].flag==0)</p><p> printf("該值不存在!
124、\n\n");</p><p> else if(a[i].e==e)</p><p> printf("該值存在!\n\n");</p><p> else if(i==key)</p><p> printf("該值不存在!\n\n");</p><p>&
125、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 調(diào)試分析</b></p><p> 對(duì)于插入元素時(shí),無法確定位置是否已經(jīng)有元素,加入flag成員,作為標(biāo)記,這樣就解決問題了
126、。</p><p> 輸入的整數(shù)的可能為負(fù),所以先判斷是否為負(fù),如果為負(fù),必須先把他變成正數(shù)。</p><p><b> 用戶手冊(cè)</b></p><p> 演示程序的運(yùn)行環(huán)境為Windows 2007系統(tǒng),Microsoft Visual Studio 6.0中的Microsoft Visual C++ 6.0中運(yùn)行。執(zhí)行文件為:has
127、h.exe</p><p> (2)進(jìn)入演示程序后即顯示DOS形式的界面:</p><p> 選擇相應(yīng)功能進(jìn)入子系統(tǒng),根據(jù)提示可以完成相應(yīng)操作。</p><p><b> 測(cè)試結(jié)果</b></p><p><b> 選擇1.插入元素:</b></p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)(c語言版)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(含源代碼)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論