【C语言 | 数据结构】数据结构概述

本文详细介绍了数据结构的概念,包括数据、数据元素、数据类型以及数据的逻辑和存储结构。逻辑结构涵盖线性、树状和图形结构,而存储结构则涉及顺序和链式存储。此外,讨论了数据的操作、抽象数据类型以及算法的设计原则和衡量标准,强调正确性、可读性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据、数据元素、数据元素的数据类型

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

  • 数据是人们利用文字符号、数字符号及其其他规定的符号对现实世界的食物及其活动所作的抽象描述。
  • 表示一个事物的一组数据称作一个数据元素
  • 构成数据元素的数据称作该数据元素的数据项
  • 没有实际含义的数据元素称为抽象数据元素

二、数据的逻辑结构

  • 数据元素之间的相互联系方式称为数据的逻辑结构

  • 数据的逻辑结构有三种:线性结构树状结构图形结构

  • 线性结构
    线性结构

  • 树状结构
    树状结构

  • 图形结构
    图形结构

三、数据的存储结构

  • 数据元素在计算机中的存储结构称为数据的存储结构

  • 数据的存储结构有两种:顺序存储结构链式存储结构

  • 顺序存储结构:数据元素存储在一块连续地址空间的内存中 。

  • 逻辑上相邻的数据元素,物理上也相邻。
    顺序存储结构

  • 指针是指向物理存储单元地址的变量。我们把由数据元素域指针域组成的一个结构体称为一个结点

  • 链式存储结构:使用指针把相互直接关联的结点(即直接前驱节点或直接后继结点)链接起来。

  • 逻辑上相邻的数据元素,在物理上 (即内存存储位置上)不一定相邻。
    链式存储结构

四、数据的操作

  • 一种数据类型的数据允许进行的某种操作称作数据的操作,一种数据类型的数据所有的操作称作数据的操作集合

五、抽象数据类型

  • 类型是一组值的集合。
  • 数据类型是指一个类型和定义在这个类型上的操作集合。
  • 抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合。
  • 数据结构讨论线性表、堆栈、队列、串、数组、广义表、树、二叉树、图等基本数据结构的功能和设计方法。

六、算法及其衡量标准

  • 算法是描述求解问题方法的操作步骤集合。

算法设计应满足的性质:

  • 输入性

    ⭐ 具有零个或若干个输入量。

  • 输出性

    ⭐ 至少产生一个输出量或执行一个有意义操作。

  • 有限性

    ⭐ 执行语句的序列是有限的。

  • 确定性

    ⭐ 每条语句的含义明确,无二义性。

  • 可执行性

    ⭐ 每条语句都应在有限的时间内完成。

算法设计应满足的目标:

  • 正确性

    ⭐ 算法应确切地满足具体问题的需求。
    ⭐ 算法设计的基本目标。

  • 可读性

    ⭐ 算法的可读性有利于人们对算法的理解,这既有利于程序的调试和维护,也有利于算法的交流和移值。
    ⭐ 算法的可读性主要体现在两个方面:一是变量名、常量名、函数名等命名应见名知意;二是要有足够多的注释。

  • 健壮性

    ⭐ 当输入非法数据时,算法要能做出适当的处理,而不应产生不可预料的后果。

  • 高时间效率

    ⭐ 算法的时间效率是指运行算法需要花费时间的多少。
    ⭐ 对于同一个问题,如果有多个算法,则应尽可能选择运行时间短的算法。

  • 高空间效率

    ⭐ 算法的空间效率是指运行算法需要占用的额外内存空间的多少。
    ⭐ 对于同一个问题,如果有多个算法,则尽可能选择占用内存空间少的算法。

【注意】 算法的高时间效率和高空间效率通常是矛盾的,当矛盾发生时,大多数情况优先考虑高时间效率。

本文件内容为数据结构讲义,html格式 1 绪论 1、1 什么是数据结构 1、2 基本概念和术语 1、3 抽象数据类型的表示与实现 1、4 算法和算法分析 1、4、1 算法 1、4、2 算法计的要求 1、4、3 算法效率的度量 1、4、4 算法的存储空间需求 2 线性表 2、1 线性表的类型定义 2、2 线性表的顺序表示和实现 实验一 2、3 线性表的链式表示和实现 2、3、1 线性链表 2、3、2 循环链表 实验二 2、3、3 双向链表 2、4 一元多项式的表示及相加 3 栈和队列 3、1、0 栈 3、1、1 抽象数据类型栈的定义 3、1、2 栈的表示和实现 3、2、0 栈的应用举例 3、2、1 数制转换 3、2、2 括号匹配的检验 3、2、3 行编辑程序 实验三 3、2、4 迷宫求解 3、2、5 表达式求值 3、3、0 栈与递归的实现 3、4、0 队列 3、4、1 抽象数据类型队列的定义 3、4、2 链队列-队列的链式表示和实现 3、4、3 循环队列-队列的顺序表示和实现 3、5、0 离散事件模拟 4、0、0 串 4、1、0 串类型的定义 4、2、0 串的表示和实现 实验四 4、2、1 定长顺序存储表示 4、2、2 堆分配存储表示 4、2、3 串的块链存储表示 4、3、0 串的模式匹配算法 4、3、1 求子串位置的定位函数 4、3、2 模式匹配的一种改进算法 4、4、0 串操作应用举例 4、4、1 文本编辑 4、4、2 建立词索引表 5、0、0 数组和广义表 5、1、0 数组的定义 5、2、0 数组的顺序表示和实现 实验五 5、3、0 矩阵的压缩存储 5、3、1 特殊矩阵 5、3、2 稀疏矩阵 5、4、0 广义表的定义 5、5、0 广义表的存储结构 5、6、0 m元多项式的表示 5、7、0 广义表的递归算法 5、7、1 求广义表的深度 5、7、2 复制广义表 5、7、3 建立广义表的存储结构 单元测验 6、0、0 树和二叉树 6、1、0 树的定义和基本术语 6、2、0 二叉树 6、2、1 二叉树的定义 6、2、2 二叉树的性质 6、2、3 二叉树的存储结构 6、3、0 遍历二叉树和线索二叉树 6、3、1 遍历二叉树 实验六 6、3、2 线索二叉树 6、4、0 树和森林 6、4、1 树的存储结构 6、4、2 森林与二叉树的转换 6、4、3 树和森林的遍历 6、5、0 树与等价问题 6、6、0 赫夫曼树及其应用 6、6、1 最优二叉树 6、6、2 赫夫曼编码 6、7、0 回溯法与树的遍历 6、8、0 树的计数 7、0、0 图 7、1、0 图的定义和术语 7、2、0 图的存储结构 7、2、1 数组表示法 7、2、2 邻接表 7、2、3 十字链表 7、2、4 邻接多重表 7、3、0 图的遍历 7、3、1 深度优先搜索 7、3、2 广度优先搜索 7、4、0 图的连通性问题 7、4、1 无向图的连通分量和生成树 7、4、2 有向图的强连通分量 7、4、3 最小生成树 7、4、4 关节点和重迦通分量 7、5、0 有向无环图及其应用 7、5、1 拓扑排序 7、5、2 关键路径 7、6、0 最短路径 7、6、1 从某个源点到其余各顶点的最短路径 7、6、2 每一对顶点之间的最短路径 8、0、0 动态存储管理 8、1、0 概述 8、2、0 可利用空间表及分配方法 8、3、0 边界标识法 8、3、1 可利用空间表的结构 8、3、2 分配算法 8、3、3 回收算法 8、4、0 伙伴系统 8、4、1 可利用空间表的结构 8、4、2 分配算法 8、4、3 回收算法 8、5、0 无用单元收集 8、6、0 存储紧缩 9、0、0 查找 9、1、0 静态查找表 9、1、1 顺序表的查找 9、1、2 有序表的查找 9、1、3 静态树表的查找 9、1、4 索引顺序表的查找 9、2、0 动态查找表 9、2、1 二叉排序树和平衡二叉树 9、2、2 B—树和B+树 9、2、3 键树 9、3、0 哈希表 9、3、1 什么是哈希表 9、3、2 哈希函数的构造方法 9、3、3 处理冲突的方法 9、3、4 哈希表的查找及其分析 实验七 10、0、0 内部排序 10、1、0 概述 10、2、0 插入排序 10、2、1 直接插入排序 10、2、2 其它插入排序 10、2、3 希尔排序 10、3、0 快速排序 10、4、0 选择排序 10、4、1 简单选择排序 10、4、2 树形选择排序 10、4、3 堆排序 10、5、0 归并排序 实验八 10、6、0 基数排序 10、6、1 多关键字的排序 10、6、2 链式基数排序 10、7、0 各种内部排序方法的比较讨论 11、0、0 外部排序 11、0、1 外存信息的存取 11、0、2 外部排序的方法 11、0、3 多路平衡归并的实现 11、0、4 置换-选择排序 11、0、5 最佳归并树 12、0、0 文件 12、1、0 有关文件的基本概念 12、2、0 顺序文件 12、3、0 索引文件 12、4、0 ISAM文件和VSAM文件 12、4、1 ISAM文件 12、4、2 VSAM文件 12、5、0 直接存取文件(散列文件) 12、6、0 多关键字文件 12、6、1 多重表文件 12、6、2 倒排文件 总复习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值