为了账号安全,请及时绑定邮箱和手机立即绑定

这段程序中Q.rear->next=p是不是多余的?去掉的话会有什么影响?

这段程序中Q.rear->next=p是不是多余的?去掉的话会有什么影响?

SMILET 2022-06-10 17:07:46
一:是不是Q.front只是记录队列的头结点的地址,里面没有data,Q.rear的是记录队列的末节点地址,里面有data?二:Qnode *p;p=(QNode*)malloc(sizeof(QNode));if(p==NULL)exit(OVERFLOW);p->next=NULLp->data=e;Q.rear->next=p;Q.rear=p;return OK;
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我看了你的问题,你问的两个问题的解析在下面
一 :你说的第一个问题是对的:
是不是Q.front只是记录队列的头结点的地址,里面没有data,Q.rear的是记录队列的末节点地址,里面有data?
解析:是这样的,不管是数组形式的循环队列还是链式的队列,front和rear只是存放对头和队未的地址。数组时头尾的下表,链式的队列是地址。总之都是地址。
二:这段程序中Q.rear->next=p是不是多余的?去掉的话会有什么影响?
解析:你的说不对。
首先,要将一个新的节点入队,就要Q.rear->next = p;这是入队操作。简单点说就是将p挂在rear后面,然后让原来的rear指向新的p;也就是接下来的一步:Q.rear = p;
如果没有这步就没有实现将新节点p入队。所以这步是必须的,不是多余的。


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 506 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号