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