综合实验七跳舞搭配问题.docx

上传人:b****5 文档编号:6194256 上传时间:2023-01-04 格式:DOCX 页数:9 大小:16.21KB
下载 相关 举报
综合实验七跳舞搭配问题.docx_第1页
第1页 / 共9页
综合实验七跳舞搭配问题.docx_第2页
第2页 / 共9页
综合实验七跳舞搭配问题.docx_第3页
第3页 / 共9页
综合实验七跳舞搭配问题.docx_第4页
第4页 / 共9页
综合实验七跳舞搭配问题.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

综合实验七跳舞搭配问题.docx

《综合实验七跳舞搭配问题.docx》由会员分享,可在线阅读,更多相关《综合实验七跳舞搭配问题.docx(9页珍藏版)》请在冰豆网上搜索。

综合实验七跳舞搭配问题.docx

综合实验七跳舞搭配问题

综合实验七跳舞搭配问题

一、实验名称

跳舞搭配问题

二、实验目的

1、熟悉并掌握队列的顺序存储和链式存储结构

2、熟悉并掌握队列的基本操作

3、掌握队列实现跳舞搭配问题

三、实验内容及要求:

1、实验内容

问题描述:

一班有m个女生,有n个男生(m不等于n),现要开一个舞会,男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。

设计一系统模拟动态地显示出上述过程,要求如下:

1)输出每曲配对情况

2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值。

根据以上问题给出的以下存储结构定义:

//定义链队结点类型

typedefstructQNode

{

intnum;

structQNode*next;

}QNode,*QueuePtr;

//定义链队头指针类型

typedefstruct

{

QueuePtrfront;//队头指针

QueuePtrrear;//队尾指针

}LinkQueue;

――――――――――定义基本操作的函数说明―――――――――――――

voidsleep(clock_twait);/*延迟函数*/

voidInitQ(LinkQueue&Q)/*建立空队列*/

voidEnQueue(LinkQueue&Q,intnum)/*入队列*/

voidDeQueue(LinkQueue&Q,int&num)/*出队列*/

voidDestroyQueue(LinkQueue&Q)/*删除队列*/

voidprintF(LinkQueue&F,inti)

/*打印第i首曲子时女队的情况*/

voidprintM(LinkQueue&M,inti)

/*打印第i首曲子时男队的情况*/

voidcheck(intn)

/*判断输入n是否合法*/

2、实验要求

(1)、用C语言编程实现上述实验内容中的结构定义和算法。

(2)、要有main()函数,并且在main()函数中使用检测数据调用上述算法。

(3)、实验完成后撰写实验报告,实验报告的具体格式参见《实验报告须知》。

(4)、实验完成后把打印好的实验报告以及电子版的实验报告和源程序一并上交。

四、参考源代码:

#include

#include

#include

voidcheck(intn);

//定义链队结点类型

typedefstructQNode

{

intnum;

structQNode*next;

}QNode,*QueuePtr;

//定义链队头指针类型

typedefstruct

{

QueuePtrfront;//队头指针

QueuePtrrear;//队尾指针

}LinkQueue;

voidsleep(clock_twait)/*延迟函数*/

{

clock_tgoal;

goal=wait+clock();

while(goal>clock());

}

voidInitQ(LinkQueue&Q)

/*建立空队列*/

{

QueuePtrp;

p=(QueuePtr)malloc(sizeof(QNode));

if(p==NULL)

exit(-1);

Q.front=p;

Q.rear=p;

Q.front->next=NULL;

}

voidEnQueue(LinkQueue&Q,intnum)

/*入队列*/

{

QueuePtrp;

p=(QueuePtr)malloc(sizeof(QNode));

if(p==NULL)

exit(-1);

p->num=num;

p->next=NULL;

Q.rear->next=p;

Q.rear=p;

}

voidDeQueue(LinkQueue&Q,int&num)

/*出队列*/

{

QueuePtrp;

if(Q.front==Q.rear)

{

printf("队列为空");

return;

}

p=Q.front->next;

num=p->num;

Q.front->next=p->next;

if(!

p->next)

Q.rear=Q.front;

free(p);

}

voidDestroyQueue(LinkQueue&Q)

//删除队列

{

while(Q.front)

{

Q.rear=Q.front->next;

free(Q.front);

Q.front=Q.rear;

}

}

voidprintF(LinkQueue&F,inti)

/*打印第i首曲子时女队的情况*/

{

QueuePtrp;

intn=1;

while(n

{

printf("_");

n++;

}

p=F.front->next;

while(F.rear!

=p){

printf("%d",p->num);

p=p->next;}

printf("%d\n",p->num);

}

voidprintM(LinkQueue&M,inti)

/*打印第i首曲子时男队的情况*/

{

QueuePtrp;

intn=1;

while(n

{

printf("_");

n++;

}

p=M.front->next;

while(M.rear!

=p){

printf("%d",p->num);

p=p->next;}

printf("%d\n",p->num);

}

voidmain()//主函数

{

intm,n,k,i,num;

QueuePtrp,q;

LinkQueueF;/*女生队*/

LinkQueueM;/*男生队*/

printf("请输入女生数量:

");

scanf("%d",&m);

check(m);

printf("请输入男生数量:

");

scanf("%d",&n);

check(n);

printf("请输曲子号:

");

scanf("%d",&k);

check(k);

InitQ(F);

InitQ(M);

for(i=1;i<=m;i++)

{

EnQueue(F,i);

}

for(i=1;i<=n;i++)

{

EnQueue(M,i);

}

for(i=1;i<=k;i++)

{

system("CLS");

printf("第%d首曲子\n",i);

printF(F,i);

printM(M,i);

p=F.front->next;

q=M.front->next;

printf("k11111:

目前跳舞的是第%d号女生和第%d号男生\n",p->num,q->num);//k的第一个值

sleep(1000);

DeQueue(F,num);

EnQueue(F,num);

DeQueue(M,num);

EnQueue(M,num);

}

InitQ(F);

InitQ(M);

for(i=1;i<=m;i++)

{

EnQueue(F,i);

}

for(i=1;i<=n;i++)

{

EnQueue(M,i);

}

for(i=1;i<=k;i++)

{

system("CLS");

printf("第%d首曲子\n",i);

printF(F,i);

printM(M,i);

p=F.front->next;

q=M.front->next;

if(p->num+1<=m)//把上次女生配对的人往后错一个

printf("k22222:

目前跳舞的是第%d号女生和第%d号男生\n",p->num+1,q->num);//k的第二个值

else//如果是最后一个女生,就错到第一个

printf("k22222:

目前跳舞的是第%d号女生和第%d号男生\n",p->num-m+1,q->num);

sleep(1000);

DeQueue(F,num);

EnQueue(F,num);

DeQueue(M,num);

EnQueue(M,num);

}

sleep(1000);

DestroyQueue(F);

DestroyQueue(M);

}

voidcheck(intn)

/*判断输入n是否合法*/

{

if(n<0)

{

printf("Errorinput!

");

exit(0);

}

}

五、运行测试(略)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1