坑点!!!

1.提交时一定要提交完整的函数,不要只提交DancerPartner函数中的代码

2.当男士或者女士多余的时候,只输出没有配对的队头元素的姓名

3.用FrontQueue_link取出队列的元素后,不要忘记用DeQueue_link删除队列的头元素。

4.当输出配对的舞伴之后,要空一行再输出没有配对的


题目要求

假设男士和女士的记录存放在一个数组中,设计算法实现舞伴配对,要求输出配对的舞伴,并输出没有配对的队头元素的姓名。其中 dancer[]是存放男士和女士信息的数组,num是数组大小。

分析代码

对所给的代码加了注释做解析

#include<stdio.h>
#include<stdlib.h>//结构体存放姓名和性别
typedef struct {char name[20];char sex;
} DataType;
//链表
struct Node {DataType      data;struct Node*  next;
};
typedef struct Node  *PNode;
//队列
struct Queue
{PNode        f;PNode        r;
};
typedef struct Queue *LinkQueue;//创建一个空队列
LinkQueue  SetNullQueue_Link()
{LinkQueue lqueue;lqueue = (LinkQueue)malloc(sizeof(struct Queue));if (lqueue != NULL){lqueue->f = NULL;lqueue->r = NULL;}elseprintf("Alloc failure! \n");//创建失败return  lqueue;
}//队列是否为空
int IsNullQueue_link(LinkQueue lqueue)
{return (lqueue->f == NULL);
}//向队列中添加元素
void EnQueue_link(LinkQueue lqueue, DataType x)
{PNode  p;p = (PNode)malloc(sizeof(struct Node));if (p == NULL)printf("Alloc failure!");else {p->data = x;p->next = NULL;if (lqueue->f == NULL){lqueue->f = p;lqueue->r = p;}else{lqueue->r->next = p;lqueue->r = p;}}
}//删除队列的头元素
void DeQueue_link(LinkQueue lqueue)
{struct Node  * p;//判断是否为空if (lqueue->f == NULL)printf("It is empty queue!\n ");else{p = lqueue->f;lqueue->f = lqueue->f->next;free(p);}
}//拿到队列的头元素
DataType  FrontQueue_link(LinkQueue lqueue)
{//判断队列是否为空if (lqueue->f == NULL){printf("It is empty queue!\n");}elsereturn (lqueue->f->data);
}void DancePartner(DataType dancer[], int num)
{/* 请在这里填写答案 */}int main()
{DataType dancer[9];for (int i = 0; i < 9; i++)scanf("%s %c", dancer[i].name, &dancer[i].sex);DancePartner(dancer, 9);return 0;
}

答案

解析见注释

void DancePartner(DataType dancer[], int num)
{/* 请在这里填写答案 *///用来存放性别为M的dancer的队列LinkQueue Mdancer=SetNullQueue_Link();//用来存放性别为F的dancer的队列LinkQueue Fdancer=SetNullQueue_Link();//遍历所给的dance数据for(int i=0;i<num;i++){//如果dance的性别为M,存入队列if(dancer[i].sex=='M')EnQueue_link(Mdancer,dancer[i]);else//如果dance的性别为F,存入队列EnQueue_link(Fdancer,dancer[i]);}//如果两个队列中都有元素,将舞伴配对输出while(!IsNullQueue_link(Mdancer)&&!IsNullQueue_link(Fdancer)){DataType d0 = FrontQueue_link(Fdancer);DeQueue_link(Fdancer);DataType d1 = FrontQueue_link(Mdancer);DeQueue_link(Mdancer);printf("%s %s\n",d0.name,d1.name);}printf("\n");//男士的队列还有剩余,输出队列的头元素if(!IsNullQueue_link(Mdancer)){DataType d0 = FrontQueue_link(Mdancer);printf("%s",d0.name);}//女士的队列含有剩余,输出队列的头元素if(!IsNullQueue_link(Fdancer)){DataType d0 = FrontQueue_link(Fdancer);printf("%s",d0.name);}
}

点点赞吧~

PTA 6-3 舞伴问题 (20 分) C语言相关推荐

  1. 天梯赛PTA L1-059 敲笨钟 (20 分)C语言解法

    微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻压"ong"韵的古诗词 ...

  2. PTA 天梯赛的善良(20分)[C语言]

    很多人只能拿18分,会掉两个测试点,因为题没读明白,当最大最小值相同时要一起输出,所以这是一道"循环+多分支"的题,循环很简单,但想拿满分多分支的情况,一定要想清楚. #inclu ...

  3. PTA 7-9 叶节点求和 (20 分)

    PTA 7-9 叶节点求和 (20 分) 对给定的有N个节点(N>=0)的二叉树,求叶节点元素之和 没有当过父节点的节点都是叶子节点 #include <iostream> #inc ...

  4. L1-049 天梯赛座位分配 (20分)(C语言)

    L1-049 天梯赛座位分配 (20分)(C语言) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛 ...

  5. L1-020 帅到没朋友 (20分)(C语言)

    L1-020 帅到没朋友 (20分)(C语言) 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤1 ...

  6. C++学习之路 | PTA乙级—— 1084 外观数列 (20 分)(精简)

    1084 外观数列 (20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 1 的数字 d 开始,序列的第 n ...

  7. C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)

    1082 射击比赛 (20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我 ...

  8. C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)

    1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...

  9. C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)

    1063 计算谱半径 (20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a ​1 ​​ +b ​1 ​​ i,⋯ ...

最新文章

  1. spring显式获取bean
  2. Caffe学习系列(18): 绘制网络模型
  3. haproxy实现discuz论坛的动静分离和负载均衡
  4. oracle 11g ocp 笔记(22)--调度程序
  5. 用dreamweaver cs6快速布局后台架构_后台系统:产品设计 | 七步法
  6. Yet Another Counting Problem CodeForces - 1342C(规律+前缀和)
  7. 【渝粤题库】国家开放大学2021春2518旅游法规答案
  8. spring cloud config的bootstrap.yml与application.proterties的区别
  9. LINUX 下open*** 详细配置
  10. studio--常见设置
  11. ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware
  12. Java8-为什么选择java8
  13. socket连接测试工具,window和linux下
  14. 世界顶级的程序员们都在读哪些书?
  15. waterline mysql_sails 框架下的 orm 实现 - Waterline
  16. php获取判断图片大小,php 获取图片尺寸的方法
  17. OpenSSL安全特征问题漏洞(CVE-2022-2068)版本1.0.2k-fips升级到3.0.5
  18. window.location.href跳转到的页面,获取值
  19. 知识欠缺到沙漠化了吧
  20. leetcode每日一题1725. 可以形成最大正方形的矩形数目 哈希表存储 到 贪心遍历 优化~

热门文章

  1. matlab中性点模块,电网中性点运行方式Matlab仿真
  2. 虚拟机ping不通网关之大坑
  3. eNSP配置IS-IS(中间系统到中间系统)
  4. 如何在公司审计中保持安全
  5. java异常处理怎么加_带你了解Java中的异常处理(上)
  6. 计算机图形学--图像的两种存储方式:点阵存储和矢量存储
  7. node.js爬取美女图片(一)
  8. notion 科研_Extensions of the notion of overall comonotonicity to partial comonotonicity
  9. xp系统首选dns服务器地址,WinXP系统DNS是什么?设置DNS的方法
  10. 【12c OCP】最新CUUG OCP-071考试题库(49题)