“头节点申请成功”未打印,请大神看一下怎么回事
#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
//链队列
typedef int datatype;
typedef struct Node{
datatype data;
struct Node *next;
}linklist;
typedef struct{
linklist *front,*rear;
}linkqueue;
//置空队
linkqueue *SetNullQ(linkqueue *q)
{
q->front=(linklist*)malloc(sizeof(linklist)); //申请头节点
cout<<"头节点申请成功"<<endl;
q->front->next=NULL;
q->rear=q->front;
cout<<"置空队列成功"<<endl;
return q;
}
//判队空
int EmptyQ(linkqueue *q)
{
if(q->front==q->rear)
return 1;
else
return 0;
}
//取队头节点数据
datatype *FrontQ(linkqueue *q)
{
datatype *ret;
if(EmptyQ(q)){
cout<<"queue is empty"<<endl;
return NULL;
}
else{
ret=(datatype*)malloc(sizeof(datatype));
*ret=q->front->next->data;
return ret;
}
}
//入队
void EnQueueQ(linkqueue *q,datatype x)
{
q->rear->next=(linklist*)malloc(sizeof(linklist));
q->rear=q->rear->next;
q->rear->data=x;
q->rear->next=NULL;
cout<<x<<"已入队"<<endl;
}
//出队,返回被删除节点的值
datatype *DeQueueQ(linkqueue *q)
{
datatype *ret;
linklist *s;
if(EmptyQ(q)){
cout<<"queue is empty"<<endl;
return NULL;
}
else{
s=q->front->next;
if(s->next==NULL)
{
q->front->next=NULL;
q->rear=q->front;
}
else q->front->next=s->next;
ret=(datatype*)malloc(sizeof(datatype));
*ret=s->data;
return ret;
}
}
int main()
{
linkqueue *q=NULL;
cout<<"置空队列"<<endl;
SetNullQ(q);
datatype x;
cout<<"请输入要入队的元素,以#结束:"<<endl;
while((x=getche())!='#')
{
EnQueueQ(q,x);
}
cout<<"取队头元素"<<endl;
datatype *a=FrontQ(q);
cout<<"队头元素为"<<*a<<endl;
cout<<"出队,返回被删除节点的值 "<<endl;
datatype *b=DeQueueQ(q);
cout<<"节点"<<*b<<"已被删除"<<endl;
cout<<"出队,返回被删除节点的值 "<<endl;
datatype *c=DeQueueQ(q);
cout<<"节点"<<*c<<"已被删除"<<endl;
return 0;
}