数据结构C语言微课版从概念到算法

书:https://pan.baidu.com/s/14cPqfkAgg3VLKETfDcoVew?pwd=953k

在数据结构C语言微课版中,从概念到算法涉及多个关键技术。以下是20个关键技术的归纳:

一、基本概念

  1. 数据:所有能输入计算机中,并被计算机程序处理的符号的集合。
  2. 数据元素:数据的基本单位,在计算机中通常作为一个整体进行考虑和处理,可以由1个或n个数据项构成,也简称为元素、记录、结点、顶点。
  3. 数据项:组成数据元素的、有独立含义的、不可分割的最小单位。
  4. 数据对象:性质相同的数据元素的集合,是数据的一个子集。
  5. 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。狭义上,数据结构是专门研究数据存储的问题;广义上,数据结构既包含数据的存储也包含数据的操作。

二、逻辑结构与存储结构

  1. 逻辑结构:指数据元素之间的逻辑关系,与数据的存储无关,独立于计算机。
    • 集合结构:数据元素之间除了“属于同一集合”的关系外,别无其他关系。
    • 线性结构:数据元素之间存在一对一的关系。
    • 树结构:数据元素之间存在一对多的关系。
    • 图结构:数据元素之间存在多对多的关系。
  2. 存储结构:数据元素及其关系在计算机中的存储表示。
    • 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。例如C语言中的数组。
    • 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
    • 索引存储结构:在存储结点信息的同时,还建立附加的索引表。例如手机中的通讯录的索引表。
    • 散列存储结构:根据结点的关键字直接计算出该结点的存储地址。

三、常见数据结构

  1. 数组:固定大小的元素集合,支持随机访问。
  2. 链表:节点组成的集合,每个节点包含数据和指向下一个节点的指针。包括单链表(每个节点指向下一个节点)、双链表(每个节点指向前一个和后一个节点)和循环链表(最后一个节点指向第一个节点)。
  3. :后进先出(LIFO)结构,常用于函数调用管理、表达式求值等。主要操作包括push(入栈)、pop(出栈)、peek(查看栈顶元素)。
  4. 队列:先进先出(FIFO)结构,常用于任务调度、缓冲区管理等。主要操作包括enqueue(入队)、dequeue(出队)、front(查看队首元素)。
  5. :每个节点可以有多个子节点。常见类型包括二叉树(每个节点最多有两个子节点)、二叉搜索树(左子树所有节点小于根节点,右子树所有节点大于根节点)、平衡树(如AVL树、红黑树,保持树的平衡性以提高查询效率)等。
  6. :由顶点和边组成的结构,表示对象之间的关系。常见表示方式包括邻接矩阵和邻接表。
  7. 哈希表:通过哈希函数将键映射到数组索引,提供快速的查找和插入。

四、基本算法

  1. 排序算法
    • 冒泡排序:重复遍历数组,比较相邻元素并交换,直到排序完成。
    • 选择排序:每次选择最小的元素,将其放到已排序部分的末尾。
    • 插入排序:将数组分为已排序和未排序部分,逐个插入未排序元素。
    • 快速排序:选择基准元素,将数组分为小于和大于基准的两部分,递归排序。
    • 归并排序:分治法将数组分为两部分,分别排序后合并。
  2. 查找算法
    • 线性查找:逐个比较,找到目标元素。
    • 二分查找:在已排序数组中,通过不断将搜索范围减半来查找目标元素。
  3. 图算法
    • 深度优先搜索(DFS):从一个节点出发,尽可能深入到每个分支,再回溯。
    • 广度优先搜索(BFS):从一个节点出发,先访问所有相邻节点,再从这些节点访问它们的邻居。
    • Dijkstra算法:求解单源最短路径的贪心算法。
    • A*算法:启发式搜索算法,常用于路径寻找,解决最优子结构问题,通过保存子问题的结果来减少计算。

这些关键技术在数据结构C语言微课版中扮演着重要角色,从基础概念到复杂算法,构成了学习数据结构的核心内容。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注