




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define queuesize 5typedef struct /定義結(jié)構(gòu)體 char name20; /定義一個長度為20的字符串,用來表示姓名 char sex; /定義一個char變量sex,用來表示性別,規(guī)定m表示男性,f 表示女性 person_type; typedef struct /定義循環(huán)隊列結(jié)構(gòu)體隊列 person_type *qBase; /儲存空間基址 int front; /頭
2、指針,若隊列不空,指向隊列頭元素 int rear; /尾指針,若隊列不空,指向隊列尾元素的下一個位置cir_queue; void init_queue(cir_queue *q) /初始化循環(huán)隊列 q->qBase =(person_type *)malloc(sizeof(person_type)*queuesize); /動態(tài)創(chuàng)建儲存空間基址if(!q->qBase ) /創(chuàng)建失敗,退出程序!printf("動態(tài)創(chuàng)建失敗,程序終止!");exit(-1); q->front=q->rear=0; /*void traverse_queue(c
3、ir_queue *q) /遍歷輸出循環(huán)隊列元素int i=q->front ;while(i != q->rear )/當頭指針與尾指針相等時結(jié)束while循環(huán)printf("%sn",q->qB );/輸出元素的名字i=(i+1)%queuesize; /解決假溢出問題*/bool full_queue(cir_queue *q) /判斷循環(huán)隊列是否為滿/當尾指針的下一個位置等于頭指針時,隊列為滿 / 為滿返回true,否則返回falseif(q->rear+1)%queuesize = q->front )return
4、true;elsereturn false;bool empty_queue(cir_queue *q)/判斷循環(huán)隊列是否為空/當頭指針位置等于尾指針時,循環(huán)隊列為空, /為空返回true,否則返回falseif(q->front = q->rear )return true;elsereturn false;void en_queue(cir_queue *q,person_type p)/進隊函數(shù),使p進入隊列 if(full_queue(q)/判斷是否為滿printf("隊列已滿,無法實現(xiàn)進隊操作,程序終止!");exit(-1);else /不滿進行操作
5、q->qBaseq->rear = p;q->rear=(q->rear+1)%queuesize; /尾指針指向下一個位置person_type de_queue(cir_queue *q)/出隊函數(shù),用p返回出隊值 person_type p; if(empty_queue(q)/判斷是否為空printf("隊列為空,無法實現(xiàn)出隊操作,程序終止!");exit(-1);else /不為空進行操作 p=q->qBaseq->front; q->front=(q->front+1)%queuesize; return p; i
6、nt length_queue(cir_queue *q)/求循環(huán)隊列元素個數(shù)return q->rear-q->front ; /尾指針位置減去頭指針位置即可person_type queue_front(cir_queue *q)/訪問隊頭元素,并返回 if(empty_queue(q)/判斷是否為空printf("隊列為空,操作失??!");exit(-1);return q->qBaseq->front; void dancepartners(cir_queue femaledancer,cir_queue maledancer,int lun
7、)/舞伴配對函數(shù) int m = length_queue(&femaledancer); /計算女隊人數(shù)int n = length_queue(&maledancer); /計算男隊人數(shù)for(int j = 1;j<=lun;+j) /for循環(huán)表示舞會進行的輪數(shù)情況/通過對男女隊人數(shù)的比較,進行一下操作 if(m>n)/ 女隊人數(shù)多于男隊,女隊有剩余隊員person_type p; person_type q;person_type s;printf("-");printf("第%d輪配對情況:n",j);for(in
8、t i =1;i<=n;+i ) /for循環(huán)實現(xiàn)配對操作 p=de_queue(&maledancer); q=de_queue(&femaledancer); /出隊的男女舞伴 printf("男:%s",); printf("和女:%s配對成功n",);/輸出配對情況en_queue(&maledancer,p); en_queue(&femaledancer,q); /將出隊的男女舞伴重新進隊 /輸出女隊剩余隊員情況,并輸出在下一輪首先出場的隊員姓名 printf("女隊中還
9、有%d個人在等待!n",m-n); s=queue_front(&femaledancer); , printf("女隊中第一個等待的是:%sn",); else if(m<n) /男隊人數(shù)多于女隊,男隊有剩余隊員 person_type p; person_type q;person_type s;printf("-"); printf("第%d輪配對情況:n",j); for(int i =1;i<=m;+i ) p=de_queue(&maledancer);q=de_queue
10、(&femaledancer);/出隊的男女舞伴 printf("男:%s",); printf("和女:%s配對成功n",);/輸出配對情況en_queue(&maledancer,p); en_queue(&femaledancer,q);/將出隊的男女舞伴重新進隊 /輸出男隊剩余隊員情況,并輸出在下一輪首先出場的隊員姓名 printf("男隊中還有%d個人在等待!n",n-m); s=queue_front(&maledancer); printf("男隊中第一個
11、等待的是:%sn",); else /男女隊人數(shù)相等,沒有剩余隊員person_type p; person_type q;person_type s;printf("-");printf("第%d輪配對情況:n",j); for(int i =1;i<=m; +i)p=de_queue(&maledancer); q=de_queue(&femaledancer); /出隊的男女舞伴 printf("男:%s",); printf("和女:%s配對成功n",
12、);/輸出配對情況en_queue(&maledancer,p); en_queue(&femaledancer,q);/將出隊的男女舞伴重新進隊 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個人的信息有誤,請重新輸入",(i-)+1); cir_queue maledancer,femaledancer;/定義兩個循環(huán)
14、隊列結(jié)構(gòu)體 init_queue(&maledancer);/調(diào)用init_queue()函數(shù)置空隊列maledancer表示男隊 init_queue(&femaledancer);/調(diào)用init_queue()函數(shù)置空隊列femaledancer表示女隊 for(i=0;i<num;i+) p=dancersi;/結(jié)構(gòu)體整體賦值 if(p.sex='f')/女的進隊列femaledancer en_queue(&femaledancer,p); printf("%s進女隊n",); else/男的進隊列maled
15、ancer en_queue(&maledancer,p); printf("%s進男隊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輪配對情況:n",j); for(int i =1;i<=m;+i )p=de_queue(
16、&maledancer); q=de_queue(&femaledancer); printf("男:%s",); printf("和女:%s配對成功n",); en_queue(&maledancer,p); en_queue(&femaledancer,q); printf("男隊中還有%d個人在等待!n",n-m); s=queue_front(&maledancer); printf("男隊中第一個等待的是:%sn",);*/* int m =length_queue(&maledance
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國木材加工機械制造行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展報告
- 2025至2030中國有機醬油市場消費趨勢與發(fā)展戰(zhàn)略研究分析報告
- 2025至2030中國月子會所行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國新型裝飾材料行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資報告
- 2025至2030中國揚琴教學行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國建筑開支行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國廢紙纖維回用行業(yè)經(jīng)營方向與未來發(fā)展策略分析報告
- 遠程辦公設備采購及維護合同
- 2025至2030中國廣告策劃行業(yè)市場發(fā)展分析及發(fā)展?jié)摿εc投資報告
- 農(nóng)業(yè)設施租賃維護合同
- 市政公用工程設計文件編制深度規(guī)定(2013年高清版)
- GB/T 9867-2008硫化橡膠或熱塑性橡膠耐磨性能的測定(旋轉(zhuǎn)輥筒式磨耗機法)
- GB/T 19139-2012油井水泥試驗方法
- GB/T 18314-2001全球定位系統(tǒng)(GPS)測量規(guī)范
- 工貿(mào)行業(yè)重點可燃性粉塵目錄(2022版)
- 鐵道概論試題及答案重要
- 空間幾何中的平行與垂直 新高考 數(shù)學 一輪復習專項提升 精講精練
- 近代史期末復習試題
- 教學設計 完整版:Summer holiday plans
- 2022年武漢市法院書記員招聘考試題庫及答案解析
- DB34-T 4010-2021 水利工程外觀質(zhì)量評定規(guī)程-高清現(xiàn)行
評論
0/150
提交評論