c语言分配内存错误的是什么,求助大神,c语言malloc内存分配失败,为什么

“头节点申请成功”未打印,请大神看一下怎么回事

#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.我做了一些复习资料,你可以康康

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值