




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define queuesize 5typedef struct /定義結(jié)構(gòu)體 char name20; /定義一個(gè)長(zhǎng)度為20的字符串,用來(lái)表示姓名 char sex; /定義一個(gè)char變量sex,用來(lái)表示性別,規(guī)定m表示男性,f 表示女性 person_type; typedef struct /定義循環(huán)隊(duì)列結(jié)構(gòu)體隊(duì)列 person_type *qBase; /儲(chǔ)存空間基址 int front; /頭
2、指針,若隊(duì)列不空,指向隊(duì)列頭元素 int rear; /尾指針,若隊(duì)列不空,指向隊(duì)列尾元素的下一個(gè)位置cir_queue; void init_queue(cir_queue *q) /初始化循環(huán)隊(duì)列 q->qBase =(person_type *)malloc(sizeof(person_type)*queuesize); /動(dòng)態(tài)創(chuàng)建儲(chǔ)存空間基址if(!q->qBase ) /創(chuàng)建失敗,退出程序!printf("動(dòng)態(tài)創(chuàng)建失敗,程序終止!");exit(-1); q->front=q->rear=0; /*void traverse_queue(c
3、ir_queue *q) /遍歷輸出循環(huán)隊(duì)列元素int i=q->front ;while(i != q->rear )/當(dāng)頭指針與尾指針相等時(shí)結(jié)束while循環(huán)printf("%sn",q->qB );/輸出元素的名字i=(i+1)%queuesize; /解決假溢出問題*/bool full_queue(cir_queue *q) /判斷循環(huán)隊(duì)列是否為滿/當(dāng)尾指針的下一個(gè)位置等于頭指針時(shí),隊(duì)列為滿 / 為滿返回true,否則返回falseif(q->rear+1)%queuesize = q->front )return
4、true;elsereturn false;bool empty_queue(cir_queue *q)/判斷循環(huán)隊(duì)列是否為空/當(dāng)頭指針位置等于尾指針時(shí),循環(huán)隊(duì)列為空, /為空返回true,否則返回falseif(q->front = q->rear )return true;elsereturn false;void en_queue(cir_queue *q,person_type p)/進(jìn)隊(duì)函數(shù),使p進(jìn)入隊(duì)列 if(full_queue(q)/判斷是否為滿printf("隊(duì)列已滿,無(wú)法實(shí)現(xiàn)進(jìn)隊(duì)操作,程序終止!");exit(-1);else /不滿進(jìn)行操作
5、q->qBaseq->rear = p;q->rear=(q->rear+1)%queuesize; /尾指針指向下一個(gè)位置person_type de_queue(cir_queue *q)/出隊(duì)函數(shù),用p返回出隊(duì)值 person_type p; if(empty_queue(q)/判斷是否為空printf("隊(duì)列為空,無(wú)法實(shí)現(xiàn)出隊(duì)操作,程序終止!");exit(-1);else /不為空進(jìn)行操作 p=q->qBaseq->front; q->front=(q->front+1)%queuesize; return p; i
6、nt length_queue(cir_queue *q)/求循環(huán)隊(duì)列元素個(gè)數(shù)return q->rear-q->front ; /尾指針位置減去頭指針位置即可person_type queue_front(cir_queue *q)/訪問隊(duì)頭元素,并返回 if(empty_queue(q)/判斷是否為空printf("隊(duì)列為空,操作失?。?quot;);exit(-1);return q->qBaseq->front; void dancepartners(cir_queue femaledancer,cir_queue maledancer,int lun
7、)/舞伴配對(duì)函數(shù) int m = length_queue(&femaledancer); /計(jì)算女隊(duì)人數(shù)int n = length_queue(&maledancer); /計(jì)算男隊(duì)人數(shù)for(int j = 1;j<=lun;+j) /for循環(huán)表示舞會(huì)進(jìn)行的輪數(shù)情況/通過對(duì)男女隊(duì)人數(shù)的比較,進(jìn)行一下操作 if(m>n)/ 女隊(duì)人數(shù)多于男隊(duì),女隊(duì)有剩余隊(duì)員person_type p; person_type q;person_type s;printf("-");printf("第%d輪配對(duì)情況:n",j);for(in
8、t i =1;i<=n;+i ) /for循環(huán)實(shí)現(xiàn)配對(duì)操作 p=de_queue(&maledancer); q=de_queue(&femaledancer); /出隊(duì)的男女舞伴 printf("男:%s",); printf("和女:%s配對(duì)成功n",);/輸出配對(duì)情況en_queue(&maledancer,p); en_queue(&femaledancer,q); /將出隊(duì)的男女舞伴重新進(jìn)隊(duì) /輸出女隊(duì)剩余隊(duì)員情況,并輸出在下一輪首先出場(chǎng)的隊(duì)員姓名 printf("女隊(duì)中還
9、有%d個(gè)人在等待!n",m-n); s=queue_front(&femaledancer); , printf("女隊(duì)中第一個(gè)等待的是:%sn",); else if(m<n) /男隊(duì)人數(shù)多于女隊(duì),男隊(duì)有剩余隊(duì)員 person_type p; person_type q;person_type s;printf("-"); printf("第%d輪配對(duì)情況:n",j); for(int i =1;i<=m;+i ) p=de_queue(&maledancer);q=de_queue
10、(&femaledancer);/出隊(duì)的男女舞伴 printf("男:%s",); printf("和女:%s配對(duì)成功n",);/輸出配對(duì)情況en_queue(&maledancer,p); en_queue(&femaledancer,q);/將出隊(duì)的男女舞伴重新進(jìn)隊(duì) /輸出男隊(duì)剩余隊(duì)員情況,并輸出在下一輪首先出場(chǎng)的隊(duì)員姓名 printf("男隊(duì)中還有%d個(gè)人在等待!n",n-m); s=queue_front(&maledancer); printf("男隊(duì)中第一個(gè)
11、等待的是:%sn",); else /男女隊(duì)人數(shù)相等,沒有剩余隊(duì)員person_type p; person_type q;person_type s;printf("-");printf("第%d輪配對(duì)情況:n",j); for(int i =1;i<=m; +i)p=de_queue(&maledancer); q=de_queue(&femaledancer); /出隊(duì)的男女舞伴 printf("男:%s",); printf("和女:%s配對(duì)成功n",
12、);/輸出配對(duì)情況en_queue(&maledancer,p); en_queue(&femaledancer,q);/將出隊(duì)的男女舞伴重新進(jìn)隊(duì) printf("沒有人剩余!n"); void main() person_type p,dancersqueuesize; /鍵盤輸入男女舞者的信息,包括姓名,性別 int i,num; printf("輸入男女dancer的總?cè)藬?shù):n"); scanf("%d",&num); printf("輸入姓名和性別(用m表示男性,用f表示女性),如
13、: nzhangsannmn"); for(i=0;i<num;i+) scanf("%s",&); getchar(); scanf("%c",&dancersi.sex); if(dancersi.sex!='f'&&dancersi.sex!='m')/判斷輸入信息是否合法 printf("第%d個(gè)人的信息有誤,請(qǐng)重新輸入",(i-)+1); cir_queue maledancer,femaledancer;/定義兩個(gè)循環(huán)
14、隊(duì)列結(jié)構(gòu)體 init_queue(&maledancer);/調(diào)用init_queue()函數(shù)置空隊(duì)列maledancer表示男隊(duì) init_queue(&femaledancer);/調(diào)用init_queue()函數(shù)置空隊(duì)列femaledancer表示女隊(duì) for(i=0;i<num;i+) p=dancersi;/結(jié)構(gòu)體整體賦值 if(p.sex='f')/女的進(jìn)隊(duì)列femaledancer en_queue(&femaledancer,p); printf("%s進(jìn)女隊(duì)n",); else/男的進(jìn)隊(duì)列maled
15、ancer en_queue(&maledancer,p); printf("%s進(jìn)男隊(duì)n",); /*int j;int m = length_queue(&femaledancer);int n = length_queue(&maledancer);if(m<n) person_type p; person_type q;person_type s;for(j=1;j<=7;+j) printf("第%d輪配對(duì)情況:n",j); for(int i =1;i<=m;+i )p=de_queue(
16、&maledancer); q=de_queue(&femaledancer); printf("男:%s",); printf("和女:%s配對(duì)成功n",); en_queue(&maledancer,p); en_queue(&femaledancer,q); printf("男隊(duì)中還有%d個(gè)人在等待!n",n-m); s=queue_front(&maledancer); printf("男隊(duì)中第一個(gè)等待的是:%sn",);*/* int m =length_queue(&maledance
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廚房煙道設(shè)備合同范本
- 就業(yè)指導(dǎo)課題申報(bào)書
- 公司承運(yùn)合同范本
- 和學(xué)徒簽合同范本
- 校級(jí)課題怎樣立項(xiàng)申報(bào)書
- 哪里看課題申報(bào)書
- 挑戰(zhàn)性課題申報(bào)書
- 加油車合同范本
- 品牌接手合同范本
- 售房合同范本6
- DB11 489-2016 建筑基坑支護(hù)技術(shù)規(guī)程
- 2022年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 2022年安全生產(chǎn)費(fèi)用投入臺(tái)賬(模版報(bào)表)
- 供水設(shè)施水池基礎(chǔ)土石方開挖施工組織方案
- 《魚類的骨骼系統(tǒng)》
- 車輛工程畢業(yè)設(shè)計(jì)(論文)-電動(dòng)叉車設(shè)計(jì)
- 《建筑識(shí)圖》匯總題庫(kù)(學(xué)生用)
- 印刷制品QC工程圖
- 傳感器及檢測(cè)技術(shù)教案
- 手工焊錫知識(shí)
- 《采油工程》講義
評(píng)論
0/150
提交評(píng)論