数据结构:ADT概念与C语言实现示例

需积分: 49 40 下载量 144 浏览量 更新于2024-07-11 收藏 4.35MB PPT 举报
在严蔚敏的数据结构讲义中,首先引入了两个数据结构类型的定义。第一个是`CTNode`,这是一个用于表示链表节点的结构体,包含孩子结点编号`childno`和指向下一个节点的指针`next`。这种结构常用于构建动态数据结构,如单链表,其中每个节点可能有多个子节点。 第二个结构体是`HNode`,它是头结点结构,包含一个数据元素`ElemType`和指向第一个子节点的指针`firstchild`。头结点在许多数据结构中扮演着起点的角色,例如在双向链表或者树形结构中,头结点通常是查找和操作的起点。 课程中提到,《数据结构与算法分析》这门课程强调了实际操作技能的培养,如用C语言实现数据结构,这涉及到基础的编程和数学知识,特别是离散数学中的概念。比如,理解数组在C语言中的下标规则(从0开始),这对于处理线性数据结构至关重要。 接下来,讲解了数据结构抽象数据类型(ADT)的概念。ADT与数据类型不同,它不仅仅局限于系统预定义的数据类型,也包括用户自定义的数据类型。ADT由值域和一组在其上的操作组成,这三个组成部分分别是定义、表示和实现。ADT的核心特性是抽象和信息隐蔽,它们确保设计的结构具有通用性,用户只需关注抽象的操作,无需关心底层数据的具体存储方式和实现细节。 举例来说,整数作为一个ADT,它的数学概念(如加减乘除)和针对整数的操作构成了一个完整的数据结构。这表明在设计数据结构时,应注重问题的抽象本质,而不是细节,以便于解决一类问题。 最后,提到了顺序存储的线性表,这是最基础的数据结构之一。它具有快速存取任意节点的优点,但插入和删除操作效率较低,因为需要移动大量元素可能导致空间浪费和扩充困难。因此,在选择数据结构时,需要权衡不同的性能需求和空间限制。 总结起来,严蔚敏的课程内容涵盖了数据结构的基本概念、C语言应用、抽象数据类型的设计原则以及具体数据结构(如链表和顺序表)的优缺点,这些都是学习数据结构时不可或缺的知识点。