考研必备~总结严蔚敏教授《数据结构》课程的重要知识点及考点
作者主页:知孤云出岫
目录
- 1. 基本概念
- 1.1 数据结构的定义
- 1.2 抽象数据类型 (ADT)
- 2. 线性表
- 2.1 顺序表
- 2.2 链表
- 3. 栈和队列
- 3.1 栈
- 3.2 队列
- 4. 树和二叉树
- 4.1 树的基本概念
- 4.2 二叉树
- 5. 图
- 5.1 图的基本概念
- 5.2 图的遍历
- 6. 查找和排序
- 6.1 查找
- 6.2 排序
- 7. 重点考点
总结严蔚敏教授《数据结构》课程的重要知识点及考点,并罗列重要的实操代码如下:
1. 基本概念
1.1 数据结构的定义
- 数据:数据是信息的符号表示,可以是数值、字符、图像等。
- 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
1.2 抽象数据类型 (ADT)
- 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
2. 线性表
2.1 顺序表
- 定义:顺序表是用一段地址连续的存储单元依次存储线性表的数据元素。
- 操作:插入、删除、查找等。
关键代码:
typedef struct {ElemType *data;int length;
} SqList;void InitList(SqList *L) {L->data = (ElemType *)malloc(MAXSIZE * sizeof(ElemType));L->length = 0;
}
2.2 链表
- 定义:链表是通过链式存储结构存储线性表的数据元素。
- 类型:单链表、双链表、循环链表。
关键代码:
typedef struct Node {ElemType data;struct Node *next;
} Node, *LinkList;void InitList(LinkList *L) {*L = (LinkList)malloc(sizeof(Node));(*L)->next = NULL;
}
3. 栈和队列
3.1 栈
- 定义:栈是一种后进先出(LIFO)的线性表。
- 操作:进栈、出栈、取栈顶元素等。
关键代码:
#define MAXSIZE 100
typedef struct {ElemType data[MAXSIZE];int top;
} SqStack;void InitStack(SqStack *S) {S->top = -1;
}
3.2 队列
- 定义:队列是一种先进先出(FIFO)的线性表。
- 类型:顺序队列、链式队列、循环队列。
关键代码:
#define MAXSIZE 100
typedef struct {ElemType data[MAXSIZE];int front;int rear;
} SqQueue;void InitQueue(SqQueue *Q) {Q->front = 0;Q->rear = 0;
}
4. 树和二叉树
4.1 树的基本概念
- 定义:树是n(n>=0)个结点的有限集。
- 类型:二叉树、平衡二叉树、完全二叉树等。
4.2 二叉树
- 遍历:前序遍历、中序遍历、后序遍历、层序遍历。
关键代码:
typedef struct BiTNode {ElemType data;struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;void PreOrderTraverse(BiTree T) {if(T != NULL) {printf("%c", T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}
}
5. 图
5.1 图的基本概念
- 定义:图是由顶点的有穷非空集合和顶点之间边的集合组成。
- 表示:邻接矩阵、邻接表等。
5.2 图的遍历
- 深度优先搜索 (DFS)
- 广度优先搜索 (BFS)
关键代码:
#define MAXVEX 100
typedef struct {char vexs[MAXVEX];int arc[MAXVEX][MAXVEX];int numVertexes, numEdges;
} MGraph;void DFS(MGraph G, int i) {visited[i] = TRUE;printf("%c ", G.vexs[i]);for(int j = 0; j < G.numVertexes; j++) {if(G.arc[i][j] == 1 && !visited[j])DFS(G, j);}
}
6. 查找和排序
6.1 查找
- 顺序查找:适用于线性表。
- 二分查找:适用于有序数组。
关键代码:
int BinarySearch(int *a, int n, int key) {int low = 0, high = n - 1;while(low <= high) {int mid = (low + high) / 2;if(a[mid] == key) return mid;else if(a[mid] > key) high = mid - 1;else low = mid + 1;}return -1;
}
6.2 排序
- 交换排序:冒泡排序、快速排序。
- 选择排序:简单选择排序、堆排序。
- 插入排序:直接插入排序、希尔排序。
- 归并排序:两路归并排序。
关键代码:
void QuickSort(int *a, int low, int high) {if(low < high) {int pivot = Partition(a, low, high);QuickSort(a, low, pivot-1);QuickSort(a, pivot+1, high);}
}int Partition(int *a, int low, int high) {int pivot = a[low];while(low < high) {while(low < high && a[high] >= pivot) high--;a[low] = a[high];while(low < high && a[low] <= pivot) low++;a[high] = a[low];}a[low] = pivot;return low;
}
7. 重点考点
- 各种数据结构的定义和特点。
- 各种数据结构的基本操作及其实现。
- 树和图的遍历算法。
- 常见的排序和查找算法及其时间复杂度分析。
- 通过实际代码理解和掌握数据结构的实现和应用。
这些内容涵盖了《数据结构》课程的重要知识点及其考点,并通过关键代码片段帮助理解和实操。
相关文章:

考研必备~总结严蔚敏教授《数据结构》课程的重要知识点及考点
作者主页:知孤云出岫 目录 1. 基本概念1.1 数据结构的定义1.2 抽象数据类型 (ADT) 2. 线性表2.1 顺序表2.2 链表 3. 栈和队列3.1 栈3.2 队列 4. 树和二叉树4.1 树的基本概念4.2 二叉树 5. 图5.1 图的基本概念5.2 图的遍历 6. 查找和排序6.1 查找6.2 排序 7. 重点考…...

【数据分享】国家级旅游休闲街区数据(Excel/Shp格式/免费获取)
之前我们分享过从我国文化和旅游部官网整理的2018-2023年我国50个重点旅游城市星级饭店季度经营状况数据(可查看之前的文章获悉详情)!文化和旅游部官网上也分享有很多与旅游相关的常用数据,我们基于官网发布的名单文件整理得到全国…...
Linux开发:进程间通过Unix Domain Socket传递数据
进程间传递数据的方式有很多种,Linux还提供一种特殊的Socket用于在多进程间传递数据,就是Unix Domain Socket(UDS)。 虽然通过普通的Socket也能做到在多进程间传递数据,不过这样需要通过协议栈层的打包与拆包,未免有些浪费效率,通过UDS,数据仅仅通过一个特殊的sock文件…...

Redis基础教程(九):redis有序集合
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...

Servlet与Servlet容器
什么是Servlet? Servlet是Java EE(现称Jakarta EE)中的一个组件,通常用于创建动态Web内容。Servlet是运行在Web服务器上的Java程序,它处理客户端的请求并生成响应。Servlet的核心功能是处理HTTP请求和响应。下面是一个servlet例…...
腾讯centos mysql安装
腾讯centos mysql安装 腾讯云提供了一系列的云计算服务,包括操作系统、数据库、服务器等。在腾讯云上安装CentOS操作系统和MySQL数据库可以按照以下步骤进行: 登录腾讯云控制台(登录 - 腾讯云)。在控制台页面上方的搜索框中输入…...
c_各个unsigned int 和 int的取值范围
bool, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t 取值范围分别是什么? 定义形式: typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long uint64_…...

C#/WPF 自制截图工具
在日常使用电脑办公时,我们经常遇到需要截图然后保存图片,我们往往需要借助安装截图工具才能实现,现在我们通过C#自制截图工具,也能够轻松进行截图。 我们可以通过C#调用WindousAPI来实现截图,实例代码如下:…...

以腾讯为例,手把手教你搭建产品帮助中心
一个精心设计的产品帮助中心对于提高用户满意度和体验至关重要。腾讯,作为全球领先的互联网企业,通过其多样化的产品线(包括微信、QQ、腾讯游戏、腾讯视频等)吸引了亿万用户。下面将以腾讯为例,向您展示如何搭建一个高…...
计算机网络概述--自我学习用
计算网络体系概述 相关问题 计算机网络为什么要分层?计算机网络是怎么分层的?三种计算机网络模型的关系是什么?每一层分别包含哪些协议?计算机网络中,数据如何在各层中传播?数据在网络各层中的存在形式是…...
超级好用的java http请求工具
kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …...

在原有的iconfont.css文件中加入新的字体图标
前言:在阿里图标库中,如果你没有这个字体图标的线上项目,那么你怎么在本地项目中的原始图标文件中添加新的图标呢? 背景:现有一个vue项目,下面是这个前端项目的字体图标文件。现在需要新开发功能页&#x…...

使用 ESP32-WROOM + DHT11 做个无屏温湿度计
最近梅雨天,有个房间湿度很大,而我需要远程查看温湿度,所以无所谓有没有显示屏,某宝上的温湿度计都是带屏的,如果连WIFI查看温湿度操作也比较麻烦,还需要换电池,实在不能满足我的需求࿰…...

如何使用 SwiftUI 构建 visionOS 应用
文章目录 前言WindowsVolumes沉浸式空间结论 前言 Apple Vision Pro 即将推出,现在是看看 SwiftUI API 的完美时机,这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示,构建应用程序的最佳方式是使用 Swift 和 SwiftUI。…...

InspireFace-商用级的跨平台开源人脸分析SDK
InspireFace-商用级的跨平台开源人脸分析SDK InspireFaceSDK是由insightface开发的⼀款⼈脸识别软件开发⼯具包(SDK)。它提供了⼀系列功能,可以满⾜各种应⽤场景下的⼈脸识别需求,包括但不限于闸机、⼈脸⻔禁、⼈脸验证等。 该S…...
华为HCIP Datacom H12-821 卷24
1.单选题 企业大楼有大量员工通常都在上班时在大厅开始接入到公司的WLAN网络,随着每位员工走到各自的工位过程中,每个人的移动端叶通过漫游的方式漫游到各自的网络覆盖区域。为了尽量保证每个终端的IP地址是固定的,建议的做法是? A、配置VLAN Pool并配置顺序算法 B、…...

TikTok马来西亚直播网络怎么配置?
TikTok是一款全球流行的社交媒体应用,在东南亚地区拥有大量用户。在马来西亚这个多元化的国家,配置高效稳定的直播网络对TikTok的运营至关重要。 配置马来西亚直播网络的必要性 广泛的地理覆盖:马来西亚包括大片陆地和众多岛屿,网…...

基于若依的文件上传、下载
基于若依实现文件上传、下载 文章目录 基于若依实现文件上传、下载1、前端实现-文件上传1.1 通用上传分析1.2 修改实现上传接口 2、后端实现-文件上传3、后端实现-文件下载4、前端实现-文件下载 官网其实也写了,但是我是自己改造封装了一下,再次迈向全栈…...

论文回顾 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法
论文速览 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法 1 引言 在计算机视觉和机器人领域,相机校准一直是一个基础而又重要的问题。传统的相机校准方法主要依赖于从已知校准图案中提取角点,然后通过优化算法求解相机的内参和外参。这…...
高级java每日一道面试题-2024年7月1日
题目:请解释 Java 中的内存泄漏,并说明如何检测和避免内存泄漏。 答案: 内存泄漏指的是程序中不再使用的对象,由于某些原因没有被垃圾回收器回收,仍然占据着内存空间,导致可用内存逐渐减少,最…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...