初始化队列后,似乎存不进数值..烦烦烦

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:56:16
一开始 我就直接在main那里case 4调用

case 4:{InitQueue(Q);EnQueue(Q);}break;

int InitQueue(SqQueue &Q){
Q.front=Q.rear=new QNode;
if(!Q.front) return false;
Q.front->next=NULL;
return true;
}

void EnQueue(SqQueue &Q)
{

QueuePtr p=new QNode;
if(Q.front==Q.rear) printf("没人预定");
else printf("you 人预定");
//if(!p) return false;
printf("how many");scanf("%d",&p->Utic);
fflush(stdin);
printf("name");gets(p->Name);
printf("%d,%s",p->Utic,p->Name);
Delay();
p->next=NULL;
Q.rear->next=p;
Q.rear=p;

}
结果 第一次就显示“没人预定” 就输入了 票数和名字。
再调用的时候 还是显示“没人预定”...即队列可能没有初始化或者队列值没有改变。。。。

初始化和入队都是从别的函数那里抄过来,稍微改动结构体而已啊。。。
为什么就不能用了呢。。。

请问大虾们。。。如何才能改正这个 没有存好的错误呢?
谢谢先啦。。
附上 结构体
typedef struct QNode/*单链队*/
{
char Name[15]; /*预订票的客户姓名

首先在int InitQueue(SqQueue &Q){
Q.front=Q.rear=new QNode; //此处执行后Q.front与Q.rear是相等的了
然后你又调用void EnQueue(SqQueue &Q)
{

QueuePtr p=new QNode;
if(Q.front==Q.rear) printf("没人预定"); //此处的if判断肯定为真,因为在你调用InitQueue函数后Q.front与Q.rear是相等的了,如上.