6-1 舞伴问题

假设男士和女士的记录存放在一个数组中,设计算法实现舞伴配对,要求输出配对的舞伴,并输出没有配对的队头元素的姓名。
函数接口定义:

void DancePartner(DataType dancer[], int num) ;

其中 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;
}

输入样例:
在这里给出一组输入。例如:

李敏浩 M
李钟硕 M
高欣雅 F
吴彦祖 M
王思聪 M
张甜源 F
张智霖 M
许丹丹 F
马小云 F

输出样例:

高欣雅 李敏浩
张甜源 李钟硕
许丹丹 吴彦祖
马小云 王思聪张智霖
void DancePartner(DataType dancer[], int num)
{LinkQueue Queue_head = SetNullQueue_Link();for (int i = 0; i < num; i++){if (!IsNullQueue_link(Queue_head) &&(FrontQueue_link(Queue_head).sex) != dancer[i].sex){if (dancer[i].sex == 'F')printf("%s %s\n", dancer[i].name, Queue_head->f->data.name);else{printf("%s %s\n", Queue_head->f->data.name, dancer[i].name);}DeQueue_link(Queue_head);}else{EnQueue_link(Queue_head, dancer[i]);}}printf("\n");if (!IsNullQueue_link(Queue_head)){printf("%s", Queue_head->f->data.name);}
}

PTA 6-1 舞伴问题相关推荐

  1. C语言舞伴问题 PTA

    舞伴问题 PTA 描述 假设男士和女士的记录存放在一个数组中,设计算法实现舞伴配对,要求输出配对的舞伴,并输出没有配对的队头元素的姓名. 样例 输入样例 李敏浩 M 李钟硕 M 高欣雅 F 吴彦祖 M ...

  2. PTA 6-3 舞伴问题 (20 分) C语言

    坑点!!! 1.提交时一定要提交完整的函数,不要只提交DancerPartner函数中的代码 2.当男士或者女士多余的时候,只输出没有配对的队头元素的姓名 3.用FrontQueue_link取出队列 ...

  3. C语言 之 PTA乙级错误集锦

    1,很大很大的数输入,并各位加和  PTA-1001 #include <stdio.h> #include <math.h> int main(){int sum=0,cou ...

  4. PTA数据结构与算法题目集6-4 6-3 6-8

    PTA数据结构与算法题目集(中文) 6-4 链式表的按序号查找 ElementType FindKth( List L, int K ){int index = 0;while(L){++index; ...

  5. PTA数据结构与算法题目集 6-9 二叉树的遍历

    PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...

  6. PTA 家庭房产 (图论,暴搜)

    PTA 家庭房产 (图论,暴搜) 题目详情: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N ...

  7. PTA—输出全排列 (20分) 递归回溯思想

    PTA-输出全排列 (20分) 递归回溯思想 题目要求: 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出 ...

  8. 舞伴问题数据结构java_Gale-Shapley算法解决舞伴问题过程详解(C++实现)

    舞伴问题是这样的:有 n 个男孩与 n 个女孩参加舞会,每个男孩和女孩均交给主持一个名单,写上他(她)中意的舞伴名字.无论男孩还是女孩,提交给主持人的名单都是按照偏爱程度排序的,排在前面的都是他们最中 ...

  9. PTA 基础编程题目集 6-6 求单链表结点的阶乘和

    PTA 基础编程题目集 6-6 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int Factorial ...

最新文章

  1. 开启mysql远程访问的权限
  2. iOS12系统应用发送普通邮件构建邮件
  3. 弦截法c语言程序,高数介质定理——弦截法求根代码实践(C语言)
  4. SpringBoot—启动原理
  5. 迁移聊天记录到Teams
  6. R语言爱好者必备——R语言速查表(高清版可下载)
  7. edup网卡 linux,应用笔记--使用USB WiFi网卡
  8. 百度地图内置 市级+县级 区域代码
  9. c语言窗口炸弹代码,C语言实现宾果消消乐
  10. C++Singleton模式
  11. JAVA 的while循环和字符串的使用
  12. 程序员怎么选择外包公司?
  13. 阿里云服务器ECS 第三篇:Oracle 数据库环境搭建
  14. oracle段的集合称为,oracle 集合和成员函数 (plsql表也被称为索引表)
  15. ios 嗅探资源 浏览器_第五章:浏览器的嗅探和特征侦测
  16. 百度员工离职总结:我永远不会成为一个好员工
  17. ASEMI肖特基二极管SBT30100VDC的特点有哪些
  18. 以下对于java标识符的说法正确的有_以下有关标识符的说法中,正确的是()。_学小易找答案...
  19. odoo14 | odoo14的国家/省/市区县联动,不自写模块仅通过odoo来实现的方法
  20. 关于无穷小微积分的教学辅导书

热门文章

  1. 第12课 Altium Designer20(AD20)+VESC6.4实战教程:原理图最后验证(北冥有鱼)
  2. Linux服务篇--openssh服务
  3. 手把手教你制作docSet文档(用于Dash或zeal)
  4. linux设置user1的密码为,linux下passwd用户设置与修改密码
  5. zabbix用户和组权限、admin密码的修改
  6. 树莓派显示到笔记本屏幕上
  7. 新手焊接电路板_新手要如何熟练焊接电子电路板
  8. 让前端的子弹飞-TypeScript
  9. 蓝牙协议--HFP协议--转
  10. CorelDRAW版本限制使用关闭永久禁止联网登录弹窗口错误修复教程