动态分配存储的顺序表:堆与C语言实现

需积分: 12 5 下载量 122 浏览量 更新于2024-08-23 收藏 988KB PPT 举报
在严蔚敏的课件中,章节4.2.2讨论的是堆分配存储表示,这是一种在程序运行过程中动态分配存储空间的顺序表,用于存储字符序列。与传统的静态存储不同,堆分配允许程序根据需要动态地请求和释放内存,常用的C语言函数如`malloc()` 和 `free()` 就被用于进行这种操作。这里提到的两种顺序串类型定义分别为: 1. `typedef char *string;`:这是C语言中的标准字符串类型,通过指针指向字符数组,允许程序在运行时动态创建和管理字符串。 2. `typedef struct{char *ch; int length;}`:这是一种自定义的顺序串结构,包含一个指向字符数组的指针`ch`和一个表示字符串长度的整型变量`length`。这种方式提供了更灵活的存储方式,可以根据需要调整字符串大小。 数据结构在计算机科学中起着核心作用,因为它决定了程序如何有效地存储和处理信息。例如,电话号码查询系统和图书馆检索系统的例子展示了数据结构如何影响算法设计和效率。数据结构包括逻辑结构(如数组、表、向量等)和物理结构(即数据在内存中的实际布局),并且定义了针对这些结构的操作,如查找、插入和删除等。 基本概念和术语中,数据(Data)是信息的基本单位,它可能表现为各种形式,如数字、文本或图像。算法是解决问题的步骤序列,其设计需考虑数据结构,因为不同的数据结构会影响算法的复杂性、时间和空间效率。算法分析则关注算法的性能,包括时间复杂度(衡量执行速度)和空间复杂度(衡量存储需求)。在堆分配存储表示中,存储空间的需求是动态的,而非固定的,这使得程序在面对大量数据时更为灵活。 总结来说,堆分配存储表示是数据结构课程中的一个重要概念,它强调了动态内存管理和数据表示对程序效率的重要性。通过理解并熟练运用不同的数据结构和动态内存管理技术,程序员可以编写出更高效、适应性强的程序。