关于舞伴问题,数据结构高手请进!

.h文件

#define NULL 0

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char ElemType;
typedef struct node{
ElemType data;
struct node *next;
}node,*queueptr;
typedef struct{
queueptr front;//队头指针
queueptr rear;//队尾指针
}LinkQueue;
void InitQueue(LinkQueue &Q);
//构造一个空队列
int EnQueue(LinkQueue &Q,ElemType e);
//插入元素e为Q的新的队尾元素
int DeQueue(LinkQueue &Q,ElemType &e);
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR
int QueueLength(LinkQueue Q);
//返回Q的元素个数,即为队列的长度

.cpp文件

#include<stdio.h>
#include<stdlib.h>
#include"wuban.h"

void InitQueue(LinkQueue &Q){
//构造一个空队列
Q.front=Q.rear=(queueptr)malloc(sizeof(node));
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
}

int EnQueue(LinkQueue &Q,ElemType e){
//插入元素e为Q的新的队尾元素
queueptr p;
p=(queueptr)malloc(sizeof(node));
if(!p) exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}

int DeQueue(LinkQueue &Q,ElemType &e){
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR
queueptr p;
if(Q.front==Q.rear)return ERROR;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;
free(p);
return OK;
}

int QueueLength(LinkQueue Q){
//返回Q的元素个数,即为队列的长度
int count=0;
while(Q.front!=Q.rear)
{count++;
Q.front=Q.front->next;}
return count;
}

主程序

#include<stdio.h>
#include<stdlib.h>
#include"wuban.h"
void main()
{ int no,i;
char name[50],sex[50],c,d;
int a,b;
LinkQueue man,woman;
printf("输入跳舞者人数:\n");
scanf("%d",&no);
InitQueue(man);
InitQueue(woman);
for(i=1;i<=no;i++)
{ printf("输入跳舞者的姓名和性别\n");
scanf("%s%s",name,sex);
if(sex=="男") EnQueue(man,name[50]);
if(sex=="女") EnQueue(woman,name[50]);
}

a=QueueLength(man);
b=QueueLength(woman);
if(a<b)
{ for(i=1;i<=a;i++)
{DeQueue(woman,d);
DeQueue(man,c);
printf("%s与%s配对\n",c,d);}
printf("剩余的女士有%d个, 她们是:",QueueLength(woman));
for(i=1;i<=b-a;i++)
{DeQueue(woman,d);
printf("%s ",d);
}
}
if(a>b)
{ for(i=1;i<=b;i++)
{DeQueue(woman,d);
DeQueue(man,c);
printf("%s与%s配对\n",c,d);}
printf("剩余的男士有%d个,他们是:",QueueLength(man));
for(i=1;i<=a-b;i++)
{DeQueue(man,c);
printf("%s ",c);
}
}
if(a==b)
{
for(i=1;i<=a;i++)
{DeQueue(man,c);
DeQueue(woman,d);
printf("%s与%s配对\n",c,d);}
}
}
就是想问下怎么改才可以使输入名字为字符串的,,
我之前把这里的%s改成%c,然后name也没有用数组,光是字符的话,如果scanf里用%c,它就不认得,要改成%s才行,但那样的话只能输一个字符了。

在%c后面加一个\n;
如果还不行的话就在随便定义一个变量加在输入的最后,这个随便取的变量用来存储你最后确定时按得回车键,你用%c不行的原因就是因为最后确认时按得回车也写进去了~
温馨提示:内容为网友见解,仅供参考
无其他回答

关于舞伴问题,数据结构高手请进!
在%c后面加一个\\n;如果还不行的话就在随便定义一个变量加在输入的最后,这个随便取的变量用来存储你最后确定时按得回车键,你用%c不行的原因就是因为最后确认时按得回车也写进去了~

visual c++数据结构高手请进!!!
要求:分别建立二叉树存储结构的输入函数,输出序列,遍历... 建立二叉树,层序、中序、遍历。(请用递归的方法) 任务:要求能过输入二叉树的各个结点,并能够用不同的方法遍历的遍历序列! 要求:分别建立二叉树存储结构的输入函数,输出序列,遍历序列的函数,输出中序遍历序列的函数。 展开  我来答 2个回答 #热议...

一个数据结构问题,我是初学者,请高手指教,并写出其详细的步骤,谢谢!
哈希地址 0 3 2 3 3 0 把以上的看成一个表格哈。。。例如,12除以4的余数是0,所以它的哈希地址是0,以此类推。。。所以要得到的四个子表应该是 (1)12,40(余数是0,即哈希地址是0)(2)空(没有余数是1的数) (3)74(余数是2) (4)23,55,63(余数是3...

数据结构的,高手请进~找出N以内的质数
他发现,设Fn=2^(2^n),则当n分别等于0、1、2、3、4时,Fn分别给出3、5、17、257、65537,都是质数,由于F5太大(F5=14292967297),他没有再往下检测就直接猜测:对于一切自然数,Fn都是质数。但是,就是在F5上出了问题!费尔马死后67年,25岁的瑞士数学家欧拉证明:F5=14292967297=641*670...

我遇到一些数据结构的问题,请高手帮忙给解答,跪谢!!!
1, t->next = p->next 2, p=head 3, n-k 4,1

数据结构高手进,帮忙答下题
1、B 2、B 3、 ?4、C 《 A的深度为1,B的深度为3,D的深度为3》5、C 6、B?7、C 8、B 直接插入排序 :n个不同的数据元素,最多需要比较n*(n-1)\/2 9、C 10、A 二、1.线性结构 ,非线性结构 。2. 352 < 100+ (6*20+6)*2 > , 232 < ...

求高手帮做数据结构题
一 B、B(稳定,相当于第二关键字为出现的顺序)二 1后进先出 2度 、高度或者深度 三 YNNNNNNNNNY 四 1.线性表:线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。单链表:线性表的一种,用一组地址任意的存储单元存放线性表中的数据...

数据结构题一道,请高手帮忙~具体算法是怎么算的!
用查找每个元素的概率乘找到该元素需要遍历的长度后相加即得到结果。avgLen = (1\/24)*1 + (1\/6)*2 + (2\/3)*3 + (1\/8)*4 = 23\/8 故选A

数据结构习题请高手帮忙?
第一趟 (56,64),(23,89,10,75)第二趟 (23,56,64),(89,10,75)第三趟 (23,56,64,89),(10,75)第四趟 (10,23,56,64,89),(75)第五趟 (10,23,56,64,75,89)2. 冒泡排序 起始(50,38,77,26,45,69)第一趟(38,50,26,45,69,77)第二趟(38,...

【数据结构·C语言】请高手帮忙检查一个关于【链表归并】的算法是否正...
1. 您的算法不符合题意,题意是不要创建新的结点就是用原来的空间,所以您 C=(ElemType*)malloc(sizeof(LNode));应该是多余的。2. 您的算法因为AB是递增有序要改为递减有序,您就每次将指针移动到序列的最末端来进行比较和插入,由于是单向链表,这样你的算法会非常低效。3. 您仅仅需要将两个...

相似回答