




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)編程題1) 題1完成函數(shù)f的實(shí)現(xiàn),參數(shù)a為int數(shù)組首地址,len為數(shù)組長(zhǎng)度,要求函數(shù)f能夠?qū)?shù)組元素重新排列奇數(shù)在前,偶數(shù)在后。 答案:void f(int *a, int len) int i, j;for(i=0; i<len-1; i+) int flg=1;for(j=0; j<len-1-i; j+) if(aj%2=0 && aj+1%2) int tmp=aj;aj=aj+1;aj+1=tmp;flg=0;if(flg) break;2) 題2完成函數(shù)f的實(shí)現(xiàn),參數(shù)a為int數(shù)組的首地址,len為數(shù)組長(zhǎng)度,要求函數(shù)f能夠返回?cái)?shù)組最大元素的個(gè)數(shù)
2、。答案:int f(const int *a, int len) int i, max=0, cnt=1;/max用于保存最大元素的序號(hào),cnt用于記錄個(gè)數(shù) for(i=1; i<len; i+)if(amax<ai) max=i;cnt=1; else if(amax=ai) +cnt;1 / 11return cnt;3) 題3完成函數(shù)f的實(shí)現(xiàn),參數(shù)a為int數(shù)組的首地址,len為數(shù)組長(zhǎng)度,要求函數(shù)f能夠?qū)?shù)組元素按照個(gè)位排降序,同時(shí)要求使用的算法要保證排序穩(wěn)定性。答案:解法一:(插入排序)void f(int *a, int len) int i, j, tmp;for(i=
3、1; i<len; +i) tmp=ai;if(!(ai%10>a0%10) /對(duì)某數(shù)進(jìn)行%10運(yùn)算,即可獲取其個(gè)位上的值 for(j=i-1; tmp%10>aj%10; -j)aj+1=aj;aj+1=tmp; else for(j=i; j>0; -j)aj=aj-1;a0=tmp;解法二:(冒泡排序)void f(int *a, int len) int i, j, flg, tmp;for(i=0; i<len-1; +i) flg=0;for(j=0; j<len-i-1; j+)if(aj+1%10>aj%10) tmp=aj+1; aj
4、+1=aj;aj=tmp;if(flg=0) break;4) 題4完成函數(shù)f的實(shí)現(xiàn),參數(shù)a為int數(shù)組首地址,len數(shù)組長(zhǎng)度,要求函數(shù)f返回?cái)?shù)組中元素是否構(gòu)成大根堆,是返回1,否返回0.答案:_Bool f(const int *a, int len) int i;for(i=(len-1)/2; i>=0; -i) if(ai<a2*(i+1)-1 | ai<a2*(i+1) return false;return true;5) 題5完成函數(shù)f的實(shí)現(xiàn),參數(shù)a為int數(shù)組首地址,len為數(shù)組長(zhǎng)度,x為一個(gè)整數(shù),假設(shè)數(shù)組元素已排好降序,要求函數(shù)f運(yùn)用折半查找算法,查找數(shù)組中
5、是否存在x,存在返回1,不存在返回0。答案:_Bool f(const int *a, int len, int x) int low=0, high=len-1, mid=(low+high)/2;while(low<high) if(amid=x) return true; else if(amid<x) high=mid; else if(amid>x) low=mid+1;mid=(low+high)/2;return false;6) 題6完成函數(shù)f的實(shí)現(xiàn),參數(shù)s和t分別表示兩個(gè)字符串首地址,要求函數(shù)f返回字符串t在字符串s中出現(xiàn)的次數(shù),例如:f(“aaa”, “a
6、a”)返回2。答案:int f(const char *s, const char *t) int len1=strlen(s), len2=strlen(t), i, num=0;for(i=0 ;i<len1-len2+1; +i)if(strncmp(s+i, t, len2)=0)+num;return num;7) 題7代碼中,結(jié)構(gòu)體Node表示雙鏈表節(jié)點(diǎn),其中p指向前驅(qū),n指向后繼;結(jié)構(gòu)體List表示鏈表,指針head指向鏈表頭節(jié)點(diǎn),tail指向鏈表尾節(jié)點(diǎn),當(dāng)鏈表為空時(shí),head和tail為0(NULL)。完成函數(shù)f的實(shí)現(xiàn),參數(shù)lp表示鏈表結(jié)構(gòu)的指針,要求函數(shù)f能夠刪除lp指
7、向鏈表的尾節(jié)點(diǎn),并釋放內(nèi)存(假設(shè)鏈表節(jié)點(diǎn)內(nèi)存來(lái)自堆區(qū)),函數(shù)f的返回值表示刪除操作是否成功,成功返回1,否則返回0。答案:_Bool f(List *lp) if(lp->tail=NULL)return false;Node *cur=lp->tail;lp->tail=cur->p;if(lp->tail=NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);return true;8) 題8代碼中,結(jié)構(gòu)體Node表示二叉樹(shù)節(jié)點(diǎn),其中l(wèi)eft指向左孩子,right指向右孩子;完成函數(shù)f的實(shí)現(xiàn),參數(shù)
8、root表示二叉樹(shù)根節(jié)點(diǎn)指針,要求函數(shù)f返回該樹(shù)的深度,提示可用先序遍歷。答案:int f(const Node *root) if(root=NULL)return 0;int l=f(root->left);int r=f(root->right);return l>r?l+1:r+1;9) 題9代碼中,結(jié)構(gòu)體Node表示二叉樹(shù)節(jié)點(diǎn),其中l(wèi)eft指向左孩子,right指向右孩子;完成函數(shù)f的實(shí)現(xiàn),參數(shù)root表示二叉樹(shù)根節(jié)點(diǎn)指針,要求函數(shù)f釋放該樹(shù)全部節(jié)點(diǎn)占用的內(nèi)存(假設(shè)節(jié)點(diǎn)內(nèi)存來(lái)自堆區(qū)),提示可用后序遍歷。答案:int f(Node *root) if(root=NUL
9、L)return;f(root->left);f(root->right);free(root);10) 題10代碼中,結(jié)構(gòu)體Node表示單鏈表的節(jié)點(diǎn),data是整型數(shù)據(jù)域,next是指向后繼的指針;完成函數(shù)f的實(shí)現(xiàn),參數(shù)head是某鏈表的頭節(jié)點(diǎn),參數(shù)x表示一個(gè)整數(shù),要求函數(shù)f返回鏈表中數(shù)據(jù)域大于x的節(jié)點(diǎn)的個(gè)數(shù)。答案:int f(Node *head, int x) Node *p;int cnt=0;for(p=head; p!=NULL; p=p->next)if(p->data>x)cnt+;return cnt;11) 題11完成函數(shù)f的實(shí)現(xiàn),參數(shù)n表示正
10、整數(shù),參數(shù)a表示二維數(shù)組首地址,a表示的二維數(shù)組用于存儲(chǔ)n個(gè)系欸但有向圖的鄰接矩陣,aij=1時(shí)表示節(jié)點(diǎn)i到節(jié)點(diǎn)j有邊,函數(shù)f需要返回有向圖中出度大于入度的頂點(diǎn)的個(gè)數(shù)。答案:int f(int n, const _Bool ann) int i, j, cnt=0;for(i=0; i<n; i+) int in=0, out=0;for(j=0; j<n; j+)if(aji)in+;if(aij)out+;if(out>in)cnt+;return cnt;12) 題12完成函數(shù)f的實(shí)現(xiàn),參數(shù)n表示正整數(shù),參數(shù)a表示一個(gè)一位數(shù)組首地址,i表示一個(gè)正整數(shù)(0<=i&l
11、t;n),a表示的一維數(shù)組用于存儲(chǔ)n個(gè)節(jié)點(diǎn)無(wú)向圖的鄰接矩陣的上三角壓縮存儲(chǔ),函數(shù)f需要返回?zé)o向圖中節(jié)點(diǎn)i的度。答案:int f(int n, const _Bool a, int i) int j, k=0;int m=n-i;for(j=0; j<i; j+)k+=(n-);int cnt=0;for(j=k; j<k+m; j+)if(aj)cnt+;return cnt;13) 題13完成函數(shù)f的實(shí)現(xiàn),參數(shù)s表示字符串首地址,字符串中僅有(和),函數(shù)f返回一個(gè)布爾值,當(dāng)字符串中的(和)恰好匹配時(shí)返回真,否則返回假。答案:_Bool f(const char *s) int s
12、tack=0, i;/stack表示棧,stack=0時(shí)棧空f(shuō)or(i=0; si!='0' i+)if(si='')stack+;else if(si='' && stack>0)stack-;elsereturn false;if(stack=0)return true;return false;14) 題14完成函數(shù)f的實(shí)現(xiàn),參數(shù)s1和s2分別表示兩個(gè)字符串首地址,要求函數(shù)f實(shí)現(xiàn)不區(qū)分大小寫(xiě)字母的字符串比較,當(dāng)s1比s2小時(shí)f返回負(fù)數(shù),當(dāng)s1比s2大時(shí)返回正數(shù),字母串相等返回0。答案int f(const char *
13、s1, const char *s2) int i;for(i=0; s1i!='0' | s2i!='0' i+)if(s1i=s2i) continue; else if(s1i>='A' && s1i<='Z' | s1i>='a' && s1i<='z' && s2i>='A' && s2i<='Z' | s2i>='a' && s2i<='z' && abs(s1i-s2i)=abs('A'-'a') continue; else if(s1i>s2i) return 1; else return -1;return 0;15) 題15完成函數(shù)f的實(shí)現(xiàn),參數(shù)a、b、c表示三個(gè)int數(shù)組的首地址,la和lb表示數(shù)組a和b的長(zhǎng)度,假設(shè)數(shù)組a和b存在升序。要求函數(shù)f完成將數(shù)組a和b的內(nèi)容歸并到數(shù)組c中,即a和b的內(nèi)容復(fù)制至數(shù)組c后,c也有升序,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)教育中激發(fā)學(xué)生的自主創(chuàng)新精神的教育心理學(xué)方法
- 智慧城市公共設(shè)施的節(jié)水型智能水網(wǎng)建設(shè)
- 醫(yī)療信息培訓(xùn)中的互動(dòng)游戲化教學(xué)方法研究
- 整合技術(shù)于教學(xué)提升教育質(zhì)量的關(guān)鍵
- 以科技教育為導(dǎo)向的教育政策的反思及未來(lái)走向探索
- 教育數(shù)據(jù)挖掘技術(shù)助力教學(xué)質(zhì)量飛躍
- 基于數(shù)據(jù)的教學(xué)行為優(yōu)化及實(shí)踐探索
- 提升學(xué)習(xí)效果教育心理學(xué)的方法論
- 培訓(xùn)機(jī)構(gòu)怎樣做課件
- 抖音商戶(hù)IT設(shè)備借用歸還登記管理辦法
- 第三腰椎橫突綜合征學(xué)習(xí)課件
- 四川省成都石室天府2024屆化學(xué)高一下期末考試模擬試題含解析
- 配電柜體項(xiàng)目實(shí)施方案
- 飛機(jī)保險(xiǎn)附加擴(kuò)展保障范圍批單(航空責(zé)任)AVN52E
- 碘海醇外滲的預(yù)防與處理
- 醫(yī)療糾紛-醫(yī)療投訴登記表
- 人民醫(yī)院診斷證明書(shū)
- 燃?xì)庥邢薰咎胤N設(shè)備安全管理制度
- 2023年株洲農(nóng)村商業(yè)銀行股份有限公司招聘員工歷年試題(常考點(diǎn)甄選)含答案帶詳解-1
- 嘉峪關(guān)市招聘公辦幼兒園編制外聘用制教師考試真題2022
- 綜合日語(yǔ)說(shuō)課講課公開(kāi)課一等獎(jiǎng)市優(yōu)質(zhì)課賽課獲獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論