データ構造の伴対問題
14728 ワード
テーマと考え方
男の人と女の人が複数いますが、男の人と女の人のためにダンスパートナーを選ぶことを要求しています.出力の結果は自分のデザインによって決められています.循環隊列を使っていません.
男の人と女の人が複数いますが、男の人と女の人のためにダンスパートナーを選ぶことを要求しています.出力の結果は自分のデザインによって決められています.循環隊列を使っていません.
#include
using namespace std;
typedef struct{
string name;
char sex;
}Person;
typedef struct node{
Person data;
struct node *next;
}QNode,*Qptr;
typedef struct {
Qptr front;
Qptr rear;
}Linkqueue;
void push(Linkqueue &L,Person e)
{
QNode *p;
p = new node;
p -> data = e;
p -> next = NULL;
L.rear -> next = p;
L.rear = p;
}
void pop(Linkqueue &L)
{
QNode *p;
p = L.front -> next;
L.front -> next = p -> next;
if(L.rear == p)
L.rear = L.front;
}
int empty(Linkqueue L)
{
if(L.front == L.rear)
return 1 ;
else
return 0 ;
}
Person getelem(Linkqueue &L)
{
return (L.front -> next -> data);
}
void init(Linkqueue &L)
{
L.front = new node;
L.front -> next = NULL;
L.rear = L.front;
}
void match(Linkqueue &M,Linkqueue &F)
{
int num,n,n1;
cout << " :" << endl;
cin >> n;
cout << " n1( n1 )" << endl;
cin >> n1;
for(int i = 1; i <= n1 ; i++)
{
num = 1;
if(i == n1)
cout << " :" << endl;
while(!empty(M) && !empty(F) && num <= n)
{
Person P;
P = getelem(M);
pop(M);
push(M,P);
if(i == n1)
cout << " :" << P.name << ' ';
P = getelem(F);
pop(F);
push(F,P);
if(i == n1)
cout << " : " << P.name << endl;
num ++;
}
}
}
int main()
{
int N;
Person Per[1001];
Linkqueue F,M;
init(F);
init(M);
cout << " :" << endl;
cin >> N;
cout << " N (xiaoming F xiaofang M)" << endl;
for(int i = 1; i <= N ; i++)
{
cin >> Per[i].name >> Per[i].sex;
if(Per[i].sex == 'F')
push(F,Per[i]);
else
push(M,Per[i]);
}
match(M,F);
}
}