課件數(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頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù) 據(jù) 結(jié) 構(gòu)Data Structure測(cè)繪學(xué)院遙感系2014年11月C綜合設(shè)計(jì)實(shí)例第十一章11.1 起泡排序11.2 劃分?jǐn)?shù)組元素11.3 折半查找11.4 刪除重復(fù)數(shù)據(jù)11.5 Josephus問題11.6 洗牌11.7 三天打魚兩天曬網(wǎng)11.1起泡排序?qū)?shù)組元素進(jìn)行從小到大排序,步驟如下:第1趟起泡:從數(shù)組最后一個(gè)元素到第一個(gè)元素掃描。如果當(dāng)前元素小于前一個(gè)元素,則交換。第2趟起泡:從數(shù)組最后一個(gè)元素到第二個(gè)元素掃描。如果當(dāng)前元素小于前一個(gè)元素,則交換。依次類推,最多進(jìn)行n-1趟起泡(n是元素個(gè)數(shù)),就可實(shí)現(xiàn)排序。第 趟排序第 趟排序13453535#includevoid Bubbl

2、e(*a,n)i, j, t;for(i = 0; i i; j-)if(aj aj - 1) t = aj - 1; aj - 1 = aj; aj = t; void Pr(for( pr*a,n)i = 0; i = t & j i) j-;if(j i) ai+ = aj; while(ai = t & i j) i +; if(i j) aj- = ai;ai = t; return i;11.3折半查找已知數(shù)組元素從小到大排列,查找某一元素是否在-1。數(shù)組中。如果在,返數(shù)組下標(biāo),否則返 令low和high分別指向數(shù)組第一個(gè)和最后一個(gè)元素,重復(fù)執(zhí)行和,直到low大于high; 取居中

3、的元素下標(biāo)mid,數(shù)組元素被分為前后兩個(gè)部分; 將查找的元素與mid指向的元素比較,如果相等,則返回mid,否則如果前者小于后者,則把搜尋范半部分(high = mid - 1),否則把搜圍限制尋范圍限制在后半部分(low = mid + 1)。-1。 返回回回Binary(*a,n,item)low = 0, high = n - 1, mid; while(low high)mid = (low + high)/2;if (item = amid) return mid;elseif (item amid) high = mid - 1; else low = mid + 1;return

4、 -1;11.4刪除重復(fù)數(shù)據(jù)從頭依次選定數(shù)組中的一個(gè)元素,將選定的元素與其后的所有元素比較,如果相同就刪除后者。void Purge(*a,*n)i, j ,k;for(i = 0; i *n-1; i+)j = i + 1;while(j *n)if(aj = ai)for(k = j + 1; k *n; k+)ak-1 = ak;(*n)-;else j+;11.5JosePhus問題n個(gè)人圍坐一圈,從開始報(bào)數(shù),沿順時(shí)針方向數(shù)到m,最后數(shù)到的人被淘汰。然后接下去數(shù),數(shù)到m,再淘汰一人。重復(fù)上述過程,直到剩下1人為止。步驟如下: 建立一個(gè)長(zhǎng)為n的數(shù)組a,順序1到n表示n個(gè)人; 從第一個(gè)人開

5、始報(bào)數(shù); 用i表示開始報(bào)數(shù)的人,每數(shù)m個(gè)數(shù)淘汰一個(gè)人(n自減1),則下一個(gè)開始報(bào)數(shù)的人為i = (i + m - 1)%n。如果淘汰的正好是最后一個(gè)人,則下一輪從第一個(gè)人開始報(bào)數(shù)。 重復(fù)執(zhí)行步驟,直到n等于1。void Josephus(n,m)i, j, *a;a = (*)malloc(n*sizeof();if(a = NULL) exit(1);for (i = 0; i 1)i = (i + m - 1)%n;prf(%-4d, ai);for (j = i + 1; j n; j+)aj - 1 = aj;n-;if (i = n) i = 0;prf(n%dn, a0);free

6、(a);11.6洗牌首先定義一個(gè)結(jié)構(gòu),每的花色與點(diǎn)數(shù):pips;struct Card char suit;然后定義一個(gè)長(zhǎng)度為52的結(jié)構(gòu)數(shù)組,并將52入該數(shù)組:struct Card deck52; for (i = 0; i 52; i+)decki.suit = i/13 + 3; decki.pips = i%13 + 1;存最后編寫洗牌函數(shù),通過循環(huán),將每與隨機(jī)選定的一調(diào)換:void Shuffle(struct Card *pa,n)i, j; struct Card temp; srand(time(0); for (i = 0; i n; i+)j = rand()%n; tem

7、p = pai; pai = paj; paj = temp;程序11.1 洗牌#include #include #include struct Card char suit;pips; ;void Display(struct Card*pa, void Shuffle(struct Card*pa, void main(void)n);n);struct Card deck52;for(i = 0; i 52; +i) decki.suit = i / 13 + 3; decki.pips = i % 13 + 1;prf(before shuffling:n); Display(dec

8、k, 52);Shuffle(deck, 52);prf(after shuffling:n); Display(deck, 52);void Display(struct Card*pa,n)for(i = 0; i n; i+)prf(%c%-2d), pai.suit, pai.pips);if(i + 1) % 13 = 0) prf(n);void Shuffle(struct Card*pa,i, j;struct Card temp; srand(time(0);for (i = 0; i n; i+)n)j = rand()%n; temp = pai;pai = paj;pa

9、j = temp;11.7三天打魚,兩天曬網(wǎng)一個(gè)人從某年1月1日起,三天打魚,兩天曬網(wǎng)。編寫程序,計(jì)算他在以后的某年某月某日,是打魚還是曬網(wǎng)。算法:計(jì)算兩個(gè)日期之間相差的天數(shù),將天數(shù)對(duì)5求余,余數(shù)為1、2、3則表示在打魚,余數(shù)為4、0表示在曬網(wǎng)。具體計(jì)算時(shí),假設(shè)起始日期是,計(jì)算日期是年。計(jì)算時(shí)需要注意判斷閏程序11.2 三天打魚,兩天曬網(wǎng)#include #define StartYear 2000IsLeapYear(y);m,Total(y,d);void main(void)yr, mo, da, count;prf(Enter Date (yyyy=%d mm dd): , StartYear);scanf(%d%d%d, &yr, &mo, &da); count = Total(yr, mo, da);if(count % 5 0 & count % 5 4) prf(fishingn);else prf(slengn);Total(y,m,d)a12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;yr, mo, ndays = 0;for(yr = StartYe

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論