帮我看看这个程序为什么出错c++队列
#include"stdafx.h"typedefstructqnode*qlink;structqnode{intelement;qlinknext;}Qnode;ty...
#include "stdafx.h"
typedef struct qnode *qlink;
struct qnode{int element;qlink next;}Qnode;
typedef struct lque *Queue;
typedef struct lque{
qlink front;//队首结点指针
qlink rear;//队尾结点指针
}Lqueue;
Queue QueueIint()//创建一个空队列
{Queue Q=(Queue)malloc(sizeof *Q);
Q->front=Q->rear=0;
return Q;
}
int QueueEmpty(Queue Q)//Empty
{
return Q->front==0;
}
int QMemFull()//Full
{
qlink p;
if((p=(qlink)malloc(sizeof(Qnode)))==0) return 1;
else {free(p);return 0;}
}
int QueueFull(Queue Q)
{
return QMemFull();
}
int QueueFrist(Queue Q)
{
if(QueueEmpty(Q)) printf("Queue is empty");
return Q->front->element;
}
int QueueLast(Queue Q)
{
if(QueueEmpty(Q)) printf("Queue is empty");
return Q->rear->element;
}
void EnterQueue(int x,Queue Q)
{
qlink p;
p=(qlink)malloc(sizeof(Queue));
p->element=x;
p->next=0;
if(Q->front) Q->rear->next=p;
else Q->front=p;
Q->rear=p;
}
int DeleteQueue(Queue Q)
{
qlink p;int x;
if(QueueEmpty(Q))
printf("Queue is empty");
x=Q->front->element;
p=Q->front;
Q->front=Q->front->next;
free(p);
return x;
}
void QueueCombine(Queue s1,Queue s2,Queue s3,int a)
{
int i,x,y;
if(QueueEmpty(s2)&&QueueEmpty(s1))
printf("Queue is empty");
else{
for(i=1;i<=a;i++)
{
x=DeleteQueue(s1);
EnterQueue(x,s3);
}
}
for(i=1;i<=a;i++)
{
x=DeleteQueue(s2);
EnterQueue(x,s1);
y=DeleteQueue(s3);
EnterQueue(y,s1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Queue s1,s2,s3;
int i,j,m,n,s;
s1=QueueIint();
s2=QueueIint();
s3=QueueIint();
printf("输入数");
scanf("%d;",&s);
for(i=1;i<=s;i++)
{
printf("请输入队列s1 ");
scanf("%d;",&m);
EnterQueue(m,s1);}
for(i=1;i<=s;i++){
printf("请输入队列s2 ");
scanf("%d;",&n);
EnterQueue(n,s2);
}
QueueCombine(s1,s2,s3,s);
for(i=1;i<=2*s;i++)
{
j=DeleteQueue(s1);
printf("%d;",j);
}
return 0;
} 展开
typedef struct qnode *qlink;
struct qnode{int element;qlink next;}Qnode;
typedef struct lque *Queue;
typedef struct lque{
qlink front;//队首结点指针
qlink rear;//队尾结点指针
}Lqueue;
Queue QueueIint()//创建一个空队列
{Queue Q=(Queue)malloc(sizeof *Q);
Q->front=Q->rear=0;
return Q;
}
int QueueEmpty(Queue Q)//Empty
{
return Q->front==0;
}
int QMemFull()//Full
{
qlink p;
if((p=(qlink)malloc(sizeof(Qnode)))==0) return 1;
else {free(p);return 0;}
}
int QueueFull(Queue Q)
{
return QMemFull();
}
int QueueFrist(Queue Q)
{
if(QueueEmpty(Q)) printf("Queue is empty");
return Q->front->element;
}
int QueueLast(Queue Q)
{
if(QueueEmpty(Q)) printf("Queue is empty");
return Q->rear->element;
}
void EnterQueue(int x,Queue Q)
{
qlink p;
p=(qlink)malloc(sizeof(Queue));
p->element=x;
p->next=0;
if(Q->front) Q->rear->next=p;
else Q->front=p;
Q->rear=p;
}
int DeleteQueue(Queue Q)
{
qlink p;int x;
if(QueueEmpty(Q))
printf("Queue is empty");
x=Q->front->element;
p=Q->front;
Q->front=Q->front->next;
free(p);
return x;
}
void QueueCombine(Queue s1,Queue s2,Queue s3,int a)
{
int i,x,y;
if(QueueEmpty(s2)&&QueueEmpty(s1))
printf("Queue is empty");
else{
for(i=1;i<=a;i++)
{
x=DeleteQueue(s1);
EnterQueue(x,s3);
}
}
for(i=1;i<=a;i++)
{
x=DeleteQueue(s2);
EnterQueue(x,s1);
y=DeleteQueue(s3);
EnterQueue(y,s1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Queue s1,s2,s3;
int i,j,m,n,s;
s1=QueueIint();
s2=QueueIint();
s3=QueueIint();
printf("输入数");
scanf("%d;",&s);
for(i=1;i<=s;i++)
{
printf("请输入队列s1 ");
scanf("%d;",&m);
EnterQueue(m,s1);}
for(i=1;i<=s;i++){
printf("请输入队列s2 ");
scanf("%d;",&n);
EnterQueue(n,s2);
}
QueueCombine(s1,s2,s3,s);
for(i=1;i<=2*s;i++)
{
j=DeleteQueue(s1);
printf("%d;",j);
}
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询