PTA 6-3 舞伴问题 (20 分) C语言
坑点!!!
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语言相关推荐
- 天梯赛PTA L1-059 敲笨钟 (20 分)C语言解法
微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻压"ong"韵的古诗词 ...
- PTA 天梯赛的善良(20分)[C语言]
很多人只能拿18分,会掉两个测试点,因为题没读明白,当最大最小值相同时要一起输出,所以这是一道"循环+多分支"的题,循环很简单,但想拿满分多分支的情况,一定要想清楚. #inclu ...
- PTA 7-9 叶节点求和 (20 分)
PTA 7-9 叶节点求和 (20 分) 对给定的有N个节点(N>=0)的二叉树,求叶节点元素之和 没有当过父节点的节点都是叶子节点 #include <iostream> #inc ...
- L1-049 天梯赛座位分配 (20分)(C语言)
L1-049 天梯赛座位分配 (20分)(C语言) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛 ...
- L1-020 帅到没朋友 (20分)(C语言)
L1-020 帅到没朋友 (20分)(C语言) 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤1 ...
- C++学习之路 | PTA乙级—— 1084 外观数列 (20 分)(精简)
1084 外观数列 (20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 1 的数字 d 开始,序列的第 n ...
- C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)
1082 射击比赛 (20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我 ...
- C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)
1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...
- C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)
1063 计算谱半径 (20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a 1 +b 1 i,⋯ ...
最新文章
- spring显式获取bean
- Caffe学习系列(18): 绘制网络模型
- haproxy实现discuz论坛的动静分离和负载均衡
- oracle 11g ocp 笔记(22)--调度程序
- 用dreamweaver cs6快速布局后台架构_后台系统:产品设计 | 七步法
- Yet Another Counting Problem CodeForces - 1342C(规律+前缀和)
- 【渝粤题库】国家开放大学2021春2518旅游法规答案
- spring cloud config的bootstrap.yml与application.proterties的区别
- LINUX 下open*** 详细配置
- studio--常见设置
- ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware
- Java8-为什么选择java8
- socket连接测试工具,window和linux下
- 世界顶级的程序员们都在读哪些书?
- waterline mysql_sails 框架下的 orm 实现 - Waterline
- php获取判断图片大小,php 获取图片尺寸的方法
- OpenSSL安全特征问题漏洞(CVE-2022-2068)版本1.0.2k-fips升级到3.0.5
- window.location.href跳转到的页面,获取值
- 知识欠缺到沙漠化了吧
- leetcode每日一题1725. 可以形成最大正方形的矩形数目 哈希表存储 到 贪心遍历 优化~
热门文章
- matlab中性点模块,电网中性点运行方式Matlab仿真
- 虚拟机ping不通网关之大坑
- eNSP配置IS-IS(中间系统到中间系统)
- 如何在公司审计中保持安全
- java异常处理怎么加_带你了解Java中的异常处理(上)
- 计算机图形学--图像的两种存储方式:点阵存储和矢量存储
- node.js爬取美女图片(一)
- notion 科研_Extensions of the notion of overall comonotonicity to partial comonotonicity
- xp系统首选dns服务器地址,WinXP系统DNS是什么?设置DNS的方法
- 【12c OCP】最新CUUG OCP-071考试题库(49题)