“头节点申请成功”未打印,请大神看一下怎么回事
#include
#include
#include
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<
q->front->next=NULL;
q->rear=q->front;
cout<
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<
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<
}
//出队,返回被删除节点的值
datatype *DeQueueQ(linkqueue *q)
{
datatype *ret;
linklist *s;
if(EmptyQ(q)){
cout<
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<
SetNullQ(q);
datatype x;
cout<
while((x=getche())!='#')
{
EnQueueQ(q,x);
}
cout<
datatype *a=FrontQ(q);
cout<
cout<
datatype *b=DeQueueQ(q);
cout<
cout<
datatype *c=DeQueueQ(q);
cout<
return 0;
}
回答
既然是C++,你可以用new函数,没有那么繁琐。p->front = p->rear = new listqueue.我做了一些复习资料,你可以康康