#include
#include
struct node
{
int data;
struct node * next;
};
typedef struct node QueueNode;
struct node2
{
QueueNode *front;
QueueNode *rear;
};
typedef struct node2 Queue;
Queue InitQueue() //初始化队列
{
Queue Q;
Q.front=(QueueNode *)malloc(sizeof(QueueNode));
Q.front->data=NULL;
Q.rear=Q.front;
return(Q);
}
//进队列
Queue lnserQ(Queue Q,int x)
{
QueueNode p;
p=(QueueNode)malloc(sizeof(QueueNode));
p->data=x;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return(Q);
}
Queue DeleteQ(Queue Q)
{
QueueNode *p;
if(Q.front==Q.rear)
{
printf("队列空,无法出队列!");
return(Q);
}
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
return (Q);
}
main(){
Queue Girl,Boy;
int n,i,m,k,x,y;
printf("请输入有多少个女生:"); //创立女生的队列
scanf("%d",&n);
Girl=InitQueue() ;
for(i=1;i<n;i++)
Girl=InserQ(Girl,i);
printf("请输入有多少个男生: "); //创立男生的队列
scanf("%d",&m);
Boy=InitQueue();
for(i=1;i<m;i++)
Boy=InserQ(Boy,i);
printf("请输入有多少首歌:");
scanf("%d",&k);
for(i=0;i {
x=Boy.front->next->data;
y=Girl.front->next->data;
Boy=Delete(Boy);
Girl=Delete(Girl);
Boy=Insert(Boy,x);
Girl=Insert(Girl,y);
}
printf("\n\n有%d个男生和%d个女生在跳舞!",x,y);
}
D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\舞会.c(24) : warning C4047: '=' : 'int ' differs in levels of indirection from 'void *'
D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\舞会.c(66) : warning C4013: 'InserQ' undefined; assuming extern returning int
D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\舞会.c(66) : error C2115: '=' : incompatible types
D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\舞会.c(74) : error C2115: '=' : incompatible types
Q.front->data=NULL;
data是整数,不能=NULL,可以等于-1,0。或者把data定义成int *
Queue InitQueue() //初始化队列
{
Queue Q;
...
return Q;
}
怎么能返回堆栈上的变量呢,应该malloc申请了然后返回指针,或者定义成全局变量
printf("\n\n有%d个男生和%d个女生在跳舞!",x,y);
这个里面的逗号是全角的。
另外你定义的是DeleteQ
下面调用变成Delete。
你的程序基本完全都不对,你上课该好好听听了!