數據結構與算法之———舞伴問題(隊)




#include<stdio.h>
#include<stdlib.h>
#include"string.h"
#define maxsize 100
typedef struct
{
 char name[10];
 int sex;

}person;
typedef struct
{
 person wom[maxsize];
 int front;
 int rear;
}wom;
typedef struct
{
 person man[maxsize];
 int front;
 int rear;
}man;

void  into(wom *w,man *m,person people[],int x)
{
 int i;
 for(i=1;i<x;i++)
 {
  if (people[i].sex=='B')
  {
   strcpy(m->man[m->rear].name,people[i].name);
   m->man[m->rear].sex=people[i].sex;
   m->rear=(m->rear+1)%maxsize;
  }
  else if(people[i].sex=='G')
  {
   strcpy(w->wom[w->rear].name,people[i].name);
   w->wom[w->rear].sex=people[i].sex;
   w->rear=(w->rear+1)%maxsize;
  }
 }
}
void out(man *m,wom *w)
{
 while(m->rear!=m->front && w->front!=w->rear)
 {
  printf("男%s——女%s\n",m->man[m->front].name,w->wom[w->front].name);
  m->front=(m->front+1)%maxsize;
  w->front=(w->front+1)%maxsize;
 }
}

void judge(man *m,wom *w)
{
 int floge;
 if(m->front==m->rear&&w->front==w->rear)
  printf("perfirte");
 else
 {
  if(w->front!=w->rear)
  {
   floge=(w->rear+maxsize-w->front)%maxsize;
   printf("剩余%d個女生沒有舞伴",floge);
   printf("女生的姓名為:%s",w->wom[w->front].name);
  }
  else if(m->front!=m->rear)
  {
   floge=(m->rear+maxsize-m->front)%maxsize;
   printf("剩余%d個男生沒有舞伴",floge);
   printf("男生的姓名為:%s",m->man[m->front].name);
  } 
 }
}
int main()
{
 int x,i;
 person people[100];
 wom *w;
 man *m;
 w=(wom*)malloc(sizeof(wom));
 m=(man*)malloc(sizeof(man));
 printf("請輸入參加人數:");
 scanf("%d",&x);
 m->front=m->rear=0;
 w->front=w->rear=0;
 for(i=1;i<x;i++)
 {
  printf("請輸入人的性別與姓名,其中性別請輸入大寫字母B或者G,B代表boy,G代表girl:\n");
  scanf("%d",&people[i].sex);
  scanf("%s",people[i].name);
  if(i==x-1)
  printf("over\n");
 }
 into(w,m,people,x);
 out(m,w);
 judge(m,w);
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com