您的位置:首页 > 其它

单链表中为什么要有next指针?

2012-01-02 09:42 253 查看
【问题描述】 单链表结构中有一个指向该结构的next节点指针,为什么要有这个节点指针呢?

【分析】

两种情况:

(1) 调用1次malloc,要求保存300个相同的结构;

(2) 调用300次malloc,要求保存1个相同的结构;

这两种情况有什么区别呢?

第一种情况将分配一个连续的内存块,通过数组符号(记录了首地址),就可以访问每个结构。而第二种情况,分配的内存不是连续的,这意味着这些结构不一定会被连续存储,因此,不能通过数组符号实现对每个结构的访问。

包括单链表的链表结构就属于第二种情况,为了实现对整个结构的访问,单链表有个聪明的办法,那就是在每个结构中,利用一个名为next的指针,记录下一个结构的首地址。这样,只要知道了一个结构的首地址和结构的大小,就可以实现对全部结构的访问。

【使用场合】

单链表等链表结构,都需要建立类似的指针,记录链接结构的地址。因此每个结构会占用4字节的指针空间。当数据量比较小时,采用第一种情况的方法,由于不需要额外的指针记录结构的地址,更节省内存空间。当数据量比较大时,第一种情况,由于只malloc一次,在malloc时,必须分配足够的空间供数据域使用,而结构的数据域大小本身是未知的,有大有小,势必造成内存的浪费,第二种情况不存在该缺陷,数据量越大,优势越明显。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐