qq_38686396 2017-05-07 11:47 采纳率: 100%
浏览 3761
已采纳

C语言 数据结构 舞伴配对问题

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 100
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1

typedef int Status;
typedef int Boolean;

typedef struct
{
char sex;
char name[20];
}Person;

typedef Person DataType;

#define MAXQSIZE 100
#define QUEUEINCREMENT 2
typedef struct
{
Person *base;
int front;
int rear;
}SqQueue;
char InitQueue(SqQueue *Q)
{//构造一个空队列Q

(*Q).base=(DataType *)malloc(MAXQSIZE*sizeof(DataType));
if(!(*Q).base)
printf("OVERFLOW\n");
(*Q).front=(*Q).rear=0;
return OK;
}

Status QueneEmpty(SqQueue *Q)
{
if((*Q).front==(*Q).rear)
return TRUE;
else
return FALSE;
}
Status EnQuene(SqQueue *Q,DataType e)
{

if(((*Q).rear+1)%MAXQSIZE==(*Q).front)

{
return ERROR;
}
(*Q).base[(*Q).rear]=e;
(*Q).rear=((*Q).rear+1)%MAXQSIZE;
return OK;
}

Status DeQuene(SqQueue *Q,DataType e)
{

if((*Q).front==(*Q).rear)
    return ERROR;
e=(*Q).base[(*Q).front];
(*Q).front=((*Q).front+1)%MAXQSIZE;
return OK;

}

Person Gethead(SqQueue *Q)

{
if((*Q).front!=(*Q).rear)
return (*Q).base[(*Q).front];
else
exit(0);

}

void DancePartner(Person dancer[],int num)
{
Person p;
SqQueue Mdancers,Fdancers;
int i;
InitQueue(&Mdancers);
InitQueue(&Fdancers);
for(i=0;i<num;i++)
{
p=dancer[i];
if(p.sex=='F')
EnQuene(&Fdancers,p);
else
EnQuene(&Mdancers,p);
}
printf("the danceing partner are: \n");
while(!QueneEmpty(&Fdancers)&&!QueneEmpty(&Mdancers));
{
DeQuene(&Fdancers,p);
printf("%s",p.name);
DeQuene(&Mdancers,p);
printf("%s",p.name);
}
if(!QueneEmpty(&Fdancers));//输出女士剩余人数及队头女士的名字
{
p=Gethead(&Fdancers);
printf("%s will be the first to get a partner \n",dancer[i].name);
}
if(!QueneEmpty(&Mdancers))
{
p=Gethead(&Mdancers);
printf("%s will be the first to get a partner \n",dancer[i].name);
}
}

int main()
{
Person dancers[N];
int i,num;
printf("输入跳舞总人数:\n");
scanf("%d",&num);
printf("输入姓名和性别:\n");
for(i=0;i<num;i++)
{
scanf("%s",&dancers[i].name[20]);
getchar();
scanf("%c",&dancers[i].sex);
}
DancePartner(&dancers[N],num);
return 0;
}

程序正确,没有错误,警告。但是不能输出结果

  • 写回答

1条回答 默认 最新

  • devmiao 2017-05-07 15:45
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵