疯疯熊 2023-02-01 15:59 采纳率: 92.5%
浏览 17
已结题

链队列初始化里有一点点疑惑

int InitQueue(LinkQueue *Q)
{
Q->front = Q->rear = (QNode *)malloc(sizeof(QNode));
if(!Q->front)(为啥这里要判断!Q->front呀?Q->front不是刚给了空间是一个空指针嘛)
return 0;
Q->front->next = NULL;
return 1;
}

  • 写回答

1条回答 默认 最新

  • Eliot5566 2023-02-01 16:21
    关注

    !Q->front 检查正在检查内存分配是否成功,如果分配失败则返回 NULL。 if 语句检查分配是否失败,如果失败,函数返回 0 以指示失败。 如果分配成功,前后指针指向同一个节点,next指针设置为NULL,函数返回1表示成功。

    可資料 https://33fb22xfrplz7vd6g81wo10v6u.hop.clickbank.net/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    疯疯熊 2023-02-01 16:52

    谢谢您的解答感恩

    回复
    疯疯熊 2023-02-02 02:38

    我问了一下我们老师好像说不行,不是判断是否给了空间,是判断其内容是否为空,他是这么讲的,所以最后让我把条件改掉了,说书上错了,我也不知道了

    回复
    Eliot5566 回复 疯疯熊 2023-02-02 10:13

    “if(!Q->front)”行检查队列前端节点的内存分配是否成功。 如果分配失败,那么 Q->front 的值将被设置为 NULL,指示错误。 在这种情况下,函数返回 0 以表示错误。 如果分配成功,Q->front 将是一个有效的指针,函数返回 1,表示成功。

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
  • ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
  • ¥15 lvgl7.11怎么做出文字被选中的效果
  • ¥50 如何快速查看手机目标app的主要服务器ip
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部