考研必备~总结严蔚敏教授《数据结构》课程的重要知识点及考点
作者主页:知孤云出岫
目录
- 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 中的内存泄漏,并说明如何检测和避免内存泄漏。 答案: 内存泄漏指的是程序中不再使用的对象,由于某些原因没有被垃圾回收器回收,仍然占据着内存空间,导致可用内存逐渐减少,最…...
ComfyUI-Manager终极指南:3个核心功能彻底解决AI工作流管理难题
ComfyUI-Manager终极指南:3个核心功能彻底解决AI工作流管理难题 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable vari…...
硬件答辩问题总结
一、电源纹波是什么,为什么LDO的小,DCDC的大1.电源纹波电源纹波 是指直流电源输出电压上叠加的 交流波动成分,表现为电压在理想直流值附近上下波动。2.LDO 纹波小原理LDO 内部是一个 调整管(可变电阻) 串联在输入和输出…...
基于Arduino与应变片传感器的高精度厨房电子秤DIY全攻略
1. 项目概述:用Arduino打造一台高精度厨房电子秤作为一个喜欢在厨房里折腾的硬件爱好者,我经常遇到需要精确称量食材的场合。市面上的电子秤要么精度不够,要么价格不菲,要么功能单一。于是,我萌生了自己动手做一台的想…...
SSH工具对比:新手用户和熟练运维,选型逻辑有什么不同
结论 新手用户和熟练运维在选择 SSH 工具时,关注点往往完全不同。 新手更在意的是:能不能顺利连接、界面是否直观、文件和配置是否容易找到、网站出问题时能不能快速定位。 而熟练运维更在意的是:连接效率、命令自由度、多服务器管理能力、原…...
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目…...
【DeepSeek事件驱动架构实战指南】:20年架构师亲授5大核心陷阱与避坑清单
更多请点击: https://kaifayun.com 第一章:DeepSeek事件驱动架构全景认知 DeepSeek事件驱动架构(Event-Driven Architecture, EDA)并非单一技术组件的堆叠,而是一种以事件为第一公民、强调松耦合与异步协作的系统设计…...
Taotoken如何帮助教育科技产品实现个性化学习辅导
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken如何帮助教育科技产品实现个性化学习辅导 1. 场景与挑战 教育科技公司在开发个性化学习助手时,常常面临一个核…...
别再死磕USB HID了!用ESP32的Arduino框架手把手教你实现蓝牙鼠标键盘(附完整代码)
ESP32蓝牙HID实战:零基础打造自定义键盘鼠标 手里那块吃灰的ESP32开发板终于能派上用场了!上周我用它做了个无线演示控制器,在会议室里走着就能翻PPT,同事们都问是怎么实现的。其实秘诀就在于ESP32的蓝牙HID功能——不需要任何USB…...
车载诊断系统(OBD)的原理、演进与未来
本文约8,167字,建议收藏阅读 作者 | 北湾南巷 出品 | 汽车电子与软件 引 言 在现代汽车中,越来越多的故障不再表现为明显的机械损坏,而是以“亮灯”“报码”“性能异常”等电子信号的形式出现。发动机为什么亮起故障灯?排放是否达…...
TV Bro电视浏览器:为智能电视打造的最佳遥控器上网解决方案
TV Bro电视浏览器:为智能电视打造的最佳遥控器上网解决方案 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro 还在为智能电视上网操作不便而烦恼吗?…...
