
书:https://pan.baidu.com/s/14cPqfkAgg3VLKETfDcoVew?pwd=953k
在数据结构C语言微课版中,从概念到算法涉及多个关键技术。以下是20个关键技术的归纳:
一、基本概念
- 数据:所有能输入计算机中,并被计算机程序处理的符号的集合。
- 数据元素:数据的基本单位,在计算机中通常作为一个整体进行考虑和处理,可以由1个或n个数据项构成,也简称为元素、记录、结点、顶点。
- 数据项:组成数据元素的、有独立含义的、不可分割的最小单位。
- 数据对象:性质相同的数据元素的集合,是数据的一个子集。
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。狭义上,数据结构是专门研究数据存储的问题;广义上,数据结构既包含数据的存储也包含数据的操作。
二、逻辑结构与存储结构
- 逻辑结构:指数据元素之间的逻辑关系,与数据的存储无关,独立于计算机。
- 集合结构:数据元素之间除了“属于同一集合”的关系外,别无其他关系。
- 线性结构:数据元素之间存在一对一的关系。
- 树结构:数据元素之间存在一对多的关系。
- 图结构:数据元素之间存在多对多的关系。
- 存储结构:数据元素及其关系在计算机中的存储表示。
- 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。例如C语言中的数组。
- 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
- 索引存储结构:在存储结点信息的同时,还建立附加的索引表。例如手机中的通讯录的索引表。
- 散列存储结构:根据结点的关键字直接计算出该结点的存储地址。
三、常见数据结构
- 数组:固定大小的元素集合,支持随机访问。
- 链表:节点组成的集合,每个节点包含数据和指向下一个节点的指针。包括单链表(每个节点指向下一个节点)、双链表(每个节点指向前一个和后一个节点)和循环链表(最后一个节点指向第一个节点)。
- 栈:后进先出(LIFO)结构,常用于函数调用管理、表达式求值等。主要操作包括push(入栈)、pop(出栈)、peek(查看栈顶元素)。
- 队列:先进先出(FIFO)结构,常用于任务调度、缓冲区管理等。主要操作包括enqueue(入队)、dequeue(出队)、front(查看队首元素)。
- 树:每个节点可以有多个子节点。常见类型包括二叉树(每个节点最多有两个子节点)、二叉搜索树(左子树所有节点小于根节点,右子树所有节点大于根节点)、平衡树(如AVL树、红黑树,保持树的平衡性以提高查询效率)等。
- 图:由顶点和边组成的结构,表示对象之间的关系。常见表示方式包括邻接矩阵和邻接表。
- 哈希表:通过哈希函数将键映射到数组索引,提供快速的查找和插入。
四、基本算法
- 排序算法:
- 冒泡排序:重复遍历数组,比较相邻元素并交换,直到排序完成。
- 选择排序:每次选择最小的元素,将其放到已排序部分的末尾。
- 插入排序:将数组分为已排序和未排序部分,逐个插入未排序元素。
- 快速排序:选择基准元素,将数组分为小于和大于基准的两部分,递归排序。
- 归并排序:分治法将数组分为两部分,分别排序后合并。
- 查找算法:
- 线性查找:逐个比较,找到目标元素。
- 二分查找:在已排序数组中,通过不断将搜索范围减半来查找目标元素。
- 图算法:
- 深度优先搜索(DFS):从一个节点出发,尽可能深入到每个分支,再回溯。
- 广度优先搜索(BFS):从一个节点出发,先访问所有相邻节点,再从这些节点访问它们的邻居。
- Dijkstra算法:求解单源最短路径的贪心算法。
- A*算法:启发式搜索算法,常用于路径寻找,解决最优子结构问题,通过保存子问题的结果来减少计算。
这些关键技术在数据结构C语言微课版中扮演着重要角色,从基础概念到复杂算法,构成了学习数据结构的核心内容。