数据结构问题,关于队列的

问题描述:

数据结构问题,关于队列的
.Status EnQueue(LinkQueue &Q,QElemType e)//插入元素e为列队Q的新队尾元素
{
p=(QueuePtr)mallco(sizeof(QNode));
if(!p) exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->Next=p;
Q.rear=p;
return OK;
}
其中的
if(!p) exit(OVERFLOW);
Q.rear->Next=p;
Q.rear=p;
各是什么意思啊
1个回答 分类:综合 2014-10-26

问题解答:

我来补答
if(!p) exit(OVERFLOW);是你分配好一个内存后的,错误判断分支(事实上p == NULL),满足P == NULL的条件是你的内存用完了,没有内存去分配,就调用exit(OVERFLOW)返回了;这种情况下很少见,一般出现在你的代码不停的运行,而且存在着内存泄露,导致系统没有内存可用.
Q.rear->Next=p;当元素E放入到结点p后,在把p链接到这个队列Q中.
由于你没有把Q的结构体给描述出来,暂时认为Q.rear是原队列Q的最后一个结点.Q.rear->Next=p 后,P就变成了队列的最后一个结点
Q.rear=p;这句话放在这里是错了,影响了你整个函数的意思.暂时认为Q.rear=p
是让原队列Q的最后一个结点脱离这个队列,原来的最后一个结点也是P,所有
错了.与你的函数意思不符
 
 
展开全文阅读
剩余:2000
下一页:奇偶性的应用。