【 C 】经典抽象数据类型(ADT)之内存分配
C中的一些抽象数据类型(ADT)如链表、堆栈、队列和树等,链表已经在前几篇博文有所讨论,见:
【 C 】简化双链表插入函数(对在双链表中插入一个新值的简明程序的简化)
后面的博文会相继讨论堆栈、队列和树的一些基本的相关知识!
下面记录一个最基本的问题,内存分配问题:
所有的 ADT 都必须明确一个问题,如何获取内存来存储值,前面提到的链表,包括单链表和双链表都是通过动态内存分配来存储链表值的,事实上,方法不止于此,还有静态数组和动态分配的链式结构!
静态数组和动态分配的数组都比较好理解,也比较相似,最后一个动态分配的链式结构需要下点功夫。(个人认为如此!)
下面分别简单介绍:
静态数组要求结构的长度固定。而且,这个长度必须在编译时确定。但是这个方案最为简单,而且最不容易出错。
动态数组,可以在运行时才决定数组的长度。而且,如果需要的话,你可以通过分配一个新的、更大的数组,把原来数组的元素复制到新数组中,然后删除原先的数组,从而达到动态改变数组长度的目的。在决定是否采用动态数组时,你需要在由此增加的复杂性和随之产生的灵活性(不需要一个固定的、预定确定的长度)之间作一番权衡!
动态分配内存的相关博文:
【 C 】动态内存分配实用案例(一)之读取、排序和打印一列整形值
最后,链式结构提供最大程序的灵活性。每个元素在需要时才单独分配,所以除了不能超过机器的可用内存之外,这种方式对元素的数量几乎没有什么限制。但是链式结构的链接字段需要消耗一定的内存,在链式结构中访问一个特定元素的效率不如数组。
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/82725645
- 点赞
- 收藏
- 关注作者
评论(0)