关于链表的数据结构

虽然写过不少数据结构的东西。但是感觉对于定义的理解还是不够深刻。。有几个问题
http://img3.mukewang.com/5bbb594d0001bfe506720504.jpg
这里的。LNode是一个节点的结构体定义吧。。那么linklist是什么呢?。后面在创建一个链表时。
http://img4.mukewang.com/5bbb598300016fe606720504.jpg
为什么malloc的东西格式是linklist呢?一个节点的结构体定义不是LNode吗?。


随口一问。。。为啥非要用molloc呢。。直接 

* LNODE P =S->NEXT.这样的表达是不行的吗。。就像int i = 5;这样
感觉对于定义还是理解的不够。跪求指点。

慕姐6162487
浏览 823回答 2
2回答

雪落无痕ol

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