题目描述
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。要求编写程序实现舞伴问题。
输入
输入一共5行,第一行是男生人数m;第二行依次是男生的姓名;第三行是女士的人数n;第四行依次是女士的姓名;第五行是跳舞的轮数。
输出
配对的男士和女士的姓名。
样例输入
5
A B C D E
3
F G H
2
样例输出
B G
参考程序
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
char name;
struct LNode *next;
}LinkNode;
void Creat(LinkNode *&L, char a[], int n)
{
//β²å·¨
LinkNode *s, *r;
L=(LinkNode *) malloc (sizeof(LinkNode));
r=L;
for(int i=0; i<n; i++)
{
s = (LinkNode *) malloc (sizeof(LinkNode));
s->name = a[i];
r->next = s;
r=s;
}
r->next = L->next;
}
void print(LinkNode *M, LinkNode *N, int k)
{
LinkNode *p, *q;
p=M; q=N;
while(k)
{
p=p->next;
q=q->next;
k--;
}
printf("%c %c", p->name, q->name);
}
int main()
{
int m, n, k;
LinkNode *M, *N;
scanf("%d", &m);
char b[m];
for(int i=0; i<m; i++)
scanf(" %c", &b[i]);
Creat(M, b, m);
scanf("%d", &n);
char c[51];
for(int i=0; i<n; i++)
scanf(" %c", &c[i]);
Creat(N, c, n);
scanf("%d", &k);
print(M, N, k);
}
注意
该程序仅供学习参考!