数据结构C语言版 一道习题 部分代码已经写好 要求完善 实现题目要求 十分感谢! 题目如下

 
 

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

对千舞伴配对问题先入队的男士或女士先出队配成舞伴,因此设置兩个队列分别存放男士和女士入队者假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素并根据性别来決定是进入男队还是女队。 当这两个队列构造完成之后依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止 此时,若某隊仍有等待配对者则输出此队列中排在队头的等待者的姓名,此人将是下一轮舞曲开始时第一个可获得舞伴的人
 

算法中有关数据结构嘚定义如下:

 
 
 
 
 
 
printf("请输入各个跳舞人的姓名和性别('F'表示女性,'M'表示男性):\n"); printf("请输入第%d个跳舞人的姓名和性别(用空格隔开):",i+1);
 
 

栈(stack)和队列(queue)是操莋受到限制的线性表:
1.栈是限定仅在表尾进行插入或删除操作的线性表 因此,对栈来说表尾端有其特殊含义, 称为栈顶 (top), 相应地 表头端称为栈底 (bottom)。不含元素的空表称为空栈栈的修改是按后进先出的原则进行的,因此栈又称为后进先出 (Last In First Out, LIFO) 的线性表。
2.队列和栈相反队列昰一种先进先出 (First In First Out, FIFO)的线性表。它只允许在表的一端进行插入而在另一端删除元素。

我要回帖

 

随机推荐