Description

假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。

Input

第一行男士人数m和女士人数n(1<=m,n<=100);
第二行舞曲的数目k(1<=k<=100)。

Output

共k行,每行两个数,表示配对舞伴的序号,男士在前,女士在后。

Sample Input

4 3
6

Sample Output

1 1
2 2
3 3
4 1
1 2
2 3

题目很简单,已经告诉了舞曲数目,用两个数组,循环遍历即可。

用队列的话,构造俩个循环队列存放男女人数编号,然后循环遍历k次打印出编号即可。

主要注意循环队列的构建,多加练习,增加熟练度。

思路很简单。

这里给出循环队列代码实现,以及数组代码实现。

#include<stdio.h>
#include<malloc.h>
typedef struct QNode{int x;struct QNode *next;
}QDataNode;
typedef struct{QDataNode *front;QDataNode *rear;
}QHeadNode,*LinkQueue;
int InitQueue(LinkQueue *Q);
int EnQueue(LinkQueue *Q,int elem);
int InitQueue(LinkQueue *Q)
{LinkQueue qhead=(LinkQueue)malloc(sizeof(QHeadNode));QDataNode *vhead=(QDataNode *)malloc(sizeof(QDataNode));if(qhead==NULL||vhead==NULL){return -1;//内存分配失败 }vhead->next=NULL;*Q=qhead;(*Q)->front=vhead;(*Q)->rear=vhead;return 0;
}
int EnQueue(LinkQueue *Q,int elem)//入队列
{QDataNode *p=(QDataNode *)malloc(sizeof(QDataNode));p->x=elem;(*Q)->rear->next=p;(*Q)->rear=p;(*Q)->rear->next=(*Q)->front->next;//循环队列 !!!
}
int main()
{int m,n,k;scanf("%d%d%d",&m,&n,&k);//建立两个队列 存放男女编号 LinkQueue Q1;InitQueue(&Q1);for(int i=1;i<=m;i++){EnQueue(&Q1,i);}LinkQueue Q2;InitQueue(&Q2);for(int i=1;i<=n;i++){EnQueue(&Q2,i);}//用两个指针 遍历两个队列 打印编号 QDataNode *p1,*p2;p1=Q1->front->next;p2=Q2->front->next; for(int i=0;i<k;i++)//循环遍历k次 {printf("%d %d\n",p1->x,p2->x);p1=p1->next;p2=p2->next;}
} 

数组代码实现:

#include<stdio.h>
int main()
{int m[100],n[100];int M,N,i,k;scanf("%d%d%d",&M,&N,&k);for(i=1;i<=M;i++)//数组存放编号 m[i]=i;for(i=1;i<=N;i++)n[i]=i;for(i=1;i<=k;i++){if(i<=M)printf("%d ",m[i]);else{if(i%M==0)//取余控制循环 printf("%d ",m[M]);elseprintf("%d ",m[i%M]);}if(i<=N)printf("%d\n",n[i]);else{if(i%N==0)printf("%d\n",n[N]);elseprintf("%d\n",n[i%N]);}}} 

数据结构 周末舞会(循环队列解法)相关推荐

  1. 数据结构与算法 | 循环队列

    循环队列 实际中我们还会用到一种队列叫做循环队列,这种队列把存储空间前后连接起来,形成像环一样的结构,解决了内存空间浪费的问题 这里我们用顺序结构来实现,因为为了防止溢出的情况,这里我们需要多开一个数 ...

  2. 队列Java舞会_周末舞会(队列)

    周末舞会(队列) 题目描述 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队.跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴.规定每个舞曲能有一对跳舞者.若两队初始人数不相同,则较长的那 ...

  3. 三星手机电池循环清零代码_数据结构(C语言)-循环队列基本操作

    队列是一种先进先出(first in first out,FIFO)的线性表,是一种常用的数据结构. 它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列 ...

  4. 数据结构(c/c++)—循环队列的判断空满方式

    文章目录 前言 队列的数据结构 初始化 一.舍弃空间 二.不舍弃空间 1.计数器 2.设置标志位 前言 我们这里一共三个方法,通过是否舍弃空间来实现队列空满的判断. 队列的数据结构 const int ...

  5. 【数据结构】顺序循环队列及其实现(C语言)

    给定一个大小为MAXSIZE的数组储存一个队列,经过若干次的插入和删除以后,当队尾指针 rear = MAXSIZE 时,呈现队列满的状态,而事实上数组的前部可能还有空闲的位置.为了有效地利用空间,引 ...

  6. 2021 - 9 下旬 数据结构-线性表-循环队列-java实现代码

    //循环队列,本质就是用动态数组实现的,且出队入队时间复杂度均O(1)的队列 //相比普通队列,增设一个front指针,代表队头,代表下一个出队的元素 //循环队列的重点在于队头队尾的元素的下标的计算 ...

  7. 数据结构之顺序循环队列

    顺序循环队列 思维导图: 队列的定义: 队列的特点 队列的基本操作: 顺序循环队列基本操作的实现: 情况一:rear和front指向同一位置时 队列定义: 队列初始化: 入队: 出队: 队列判空: 返 ...

  8. 数据结构基础(7) --循环队列的设计与实现

    队列 队列简称队, 也是一种操作受限的线性表, 只允许在表的一端进行插入, 而在表的另一端进行删除.其特点为"先进先出(FIFO)",故又称为先进先出的线性表,简单队列如图所示: ...

  9. 数据结构初学之循环队列补充

    求循环队列的长度 分析: 1.当队尾指针rear指向的结点的位置下标大于队头指针front指向的结点的位置下标时(即队尾指针在队头指针的后面时), 队列的长度为len = rear - front; ...

  10. 数据结构c语言循环队列代码,数据结构C语言实现----循环队列

    代码如下: #include #include typedef char ElemType; #define MAXQUEUE 100 typedef struct { ElemType *base; ...

最新文章

  1. 随笔 | 抢红包不是一件小事
  2. 开始学习吧,《算法》:动态连通性练习
  3. 计算机网络教学重点突破,武汉理工大学计算机网络复习重点教学内容(34页)-原创力文档...
  4. Android样式和主题(二):系统有哪些主题
  5. 对Linux内核中进程上下文和中断上下文的理解
  6. 计算机导论的试题,计算机导论试题
  7. Firefox 18周岁
  8. ExtJS新手调试过程
  9. 问题:子进程父进程哪个先执行:【转】关于 fork 和父子进程的理解
  10. 存图方式---邻接表邻接矩阵前向星
  11. 强行卸载趋势科技防毒墙网络版客户端
  12. 基于C# Winform的酒店管理系统
  13. 空间管理 - 碎片化问题及解决思路
  14. Linux 安装 Composer
  15. cross_camera muti-target tracking项目
  16. 11月区块链行业大事件盘点:政策利好与监管趋严并举,你想了解的都在这
  17. 苹果全球开发者大会将于6 月5日开幕
  18. 年后“离职潮”来袭,跳槽不注意这些亏大了!
  19. 2020年《财富》中国500强排行榜数据爬取,看看都有哪些
  20. 计算机软考网络管理员资料,计算机软考网络管理员常用网络命令详解(完整版)...

热门文章

  1. socket简介 - 获取简单网页内容
  2. 算法导论9.1-1习题解答(二叉树)
  3. 用Delphi在客户端执行Unix主机命令
  4. SharePoint 2010工作流系列(2):SharePoint Designer 2010中工作流的条件和操作概览
  5. Spring Framework中的面向方面编程(AOP),第二部分
  6. Jive源码分析:tree树形数据结构
  7. arg,argmin和argmax理解
  8. sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
  9. grep正则表达式详解及练习
  10. 让Fiddler调试localhost和127.0.0.1