• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

关于链表的数据结构

虽然写过不少数据结构的东西。但是感觉对于定义的理解还是不够深刻。。有几个问题
042001acwbfptywttk1c4t.jpg

这里的。LNode是一个节点的结构体定义吧。。那么linklist是什么呢?。后面在创建一个链表时。
042003lczy8xyymzuumfmp.jpg

为什么malloc的东西格式是linklist呢?一个节点的结构体定义不是LNode吗?。


随口一问。。。为啥非要用molloc呢。。直接
* LNODE P =S->NEXT.这样的表达是不行的吗。。就像int i = 5;这样
感觉对于定义还是理解的不够。跪求指点。

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

这里涉及到两个概念:

  • typedef的作用,从第一张图中可以看到,typedef会将struct LNode{}和struct Node{}* 分别定义为LNode和LinkList,所以可以看出,类型LinkList == LNode*
  • 第二张图中,malloc函数返回值为sizeof(LNode)大小空间所在的首地址,类型为void*,这里因为需要将其作为一个LNode来使用,因此将首地址类型转换为LNode*
  • 对于作者在最后的随口一问,其实要回答明白并不能随口一说,这里涉及到空间分配问题,malloc会向计算机申请一段空间来使用,如若不做申请,那随手申请的指针会变为野指针,使得程序不可控
  • 对于LNode *P = s->next;这句话本身并没有语法错误,但是首先s在这里是个野指针,这样会使得 P也指向了一个未知的空间中,使程序走向编的未知和不可控,而且根据具体的程序需求,这样做也是不合理的

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!