C和指针 第17章 经典抽象数据类型 17.1 内存分配

经典抽象数据类型
    有些抽象数据类型(ADT)是C程序员不可或缺的工具,这是由它们的属性决定的。这类ADT有链表、堆栈、队列和树等。本章首先描述了这些结构的属性和基本实现方法,然后探讨了如果提高它们在实现上的灵活性以及由此导致的安全性能的妥协。
    17.1 内存分配
    所有的ADT都必须确定一件事情---如何获得内存来存储值。有3种可选的方案:静态数组、动态分配的数组和动态分配的链式结构。静态数组要求结构的长度固定,而且这个长度必须在编译时确定。这个方案最为简单,而且最不容易出错。如果使用动态数组,那么可以在运行时动态决定数组的长度。而且,如果需要的话,可以通过分配一个新的、更大的数组,把原来数组的元素复制到新数组中,然后删除原先的数组,从而达到动态改变数组的目的。在决定是否采用数组时,需要在由此增加的复杂性和随之产生的灵活性(不需要一个固定的、预定确定的长度)之间做一番权衡。
    最后,链式结构提供了最大程度的灵活性。每个元素在需要时才单独进行分配,所以除了不能超过机器的可用内存之外,这种方式对元素的数量几乎没有什么限制。但是,链式结构的链接字段需要消耗一定的内存,在链式结构中访问一个特定元素的效率不如数组。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值