408数据结构算法模板
下面这份408数据结构算法模板耗时3天整理,希望对大家有用
408算法题概述
得分要点
- 会写结构定义(没有就自己写上)
- 写清楚解题的算法思想
- 描述清楚算法实现
- 最后写出时间和空间复杂度
关于改卷
1、改卷老师不会上机试
2、老师改的是扫描卷
3、图文结合帮助改卷老师理解,有利于给分。
考试手写代码注意事项:
1、命名应当规范(变量、函数命名要见文知意)
2、格式要标准(换行、缩进、对齐)
3、注释要写清楚,让阅卷老师快速读懂
算法答题特点
408中的算法题主要涉及基本的数据结构(线性表和树),但也可能会涉及图。题目形式多样,但通常需要使用常见算法(排序算法、查找算法、双指针技巧、树的遍历、DFS、BFS)来解决问题或情景。
算法题基本都是在现有的算法模板下按照题目的意思进行变形得到的
算法题答题技巧
题源来自LeetCode,一般是LeetCode的改编,一般相当于LeetCode的中等偏下难度的算法题,需要参加机试的同学可以顺便带掉408算法题,如果目标院校没有机试408算法需要单独准备,如果算法想拿高分题还是要刷题的,如果不想刷题,暴力解(几层for循环)也能拿到一半分,刷题是很耗时间的,复习时间紧的建议放弃,想拿满分或者高分的建议刷题。
以上内容仅作为参考,不作为复习建议
原文传送门:
数据结构算法模板
https://www.lucenczz.top/article/af9dbf29-83b5-417a-ac0a-adbb6e721e02
408算法模板介绍
这份算法模板是按照数据结构课本大纲整理的,基本上涵盖了大部分需要用到的手写代码,一共分为21个部分,比如第一部分是

考虑到很多人不会写结构体定义,这份模板中帮大家整理了结构体定义:



然后知道定义之后,就会给出一些经常需要用到的模板比如线性表有这些常用的操作:

以上只是以顺序表举例,模板中还包括了单链表的结构体定义和基本操作,双链表的结构点定义和基本操作,栈,队列,串,树和图还有排序算法等等。
对于一些重要的算法,我还整理了一些可以实际运行的C语言版本代码,以及测试用例,比如比如图的深度优先搜索算法:

下面就是我调试过,保证可以运行的C语言代码:
#include <stdio.h>
#include <stdlib.h>#define maxSize 100 // 定义邻接表的最大大小typedef struct ArcNode {int adjvex; // 该边所指向的节点的位置struct ArcNode *nextarc; // 指向下一条边的指针int info; // 该边的相关信息(如权值)
} ArcNode;typedef struct {char data; // 定点信息ArcNode *firstarc; // 指向第一条边的指针
} VNode;typedef struct {VNode adjlist[maxSize]; // 邻接表int n, e; // 定点数和边数
} AGraph; // 图的邻接表类型int visit[maxSize]; // 定义一个全局数组,用于标记节点是否被访问过void dfs(AGraph *G, int v) {ArcNode *p;visit[v] = 1; // 标记节点v已被访问printf("%d ", v); // 输出节点v的值p = G->adjlist[v].firstarc; // 让p指向顶点v的第一条边while (p != NULL) {if (visit[p->adjvex] == 0) { // 如果节点未被访问,则递归遍历该节点dfs(G, p->adjvex);}p = p->nextarc; // 继续遍历下一条边}
}int main() {AGraph G;int i, j, k;G.n = 6; // 定点数为6G.e = 7; // 边数为7// 初始化邻接表for (i = 0; i < G.n; i++) {G.adjlist[i].data = i;G.adjlist[i].firstarc = NULL;}// 构造邻接表int edges[7][2] = {{0, 1}, {0, 2}, {1, 3}, {1, 4}, {2, 4}, {3, 5}, {4, 5}};for (k = 0; k < G.e; k++) {i = edges[k][0];j = edges[k][1];// 头插法插入边ArcNode *p = (ArcNode *)malloc(sizeof(ArcNode));p->adjvex = j;p->nextarc = G.adjlist[i].firstarc;G.adjlist[i].firstarc = p;// 无向图需要插入反向边p = (ArcNode *)malloc(sizeof(ArcNode));p->adjvex = i;p->nextarc = G.adjlist[j].firstarc;G.adjlist[j].firstarc = p;}// 初始化visit数组for (i = 0; i < G.n; i++) {visit[i] = 0;}printf("深度优先搜索结果:");dfs(&G, 0); // 从节点0开始深度优先搜索return 0;
}
可以看到我在其中给出了测试用例。并且我还整理了pdf版方便大家打印查看,以上资料获取没有任何门槛!
再发一遍传送门:
数据结构算法模板
https://www.lucenczz.top/article/af9dbf29-83b5-417a-ac0a-adbb6e721e02
以上代码均为了帮助大家理解,如果大家有更权威的代码模板,可以参照更权威版本。创作不易,给个小心心支持以下吧。
相关文章:
408数据结构算法模板
下面这份408数据结构算法模板耗时3天整理,希望对大家有用 408算法题概述 得分要点 会写结构定义(没有就自己写上)写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 关于改卷 1、改卷老师不会上机试 2、老师改的是扫描卷 3、…...
Mysql--索引分类
Mysql--索引分类 1. 索引分类2. 聚集索引&二级索引 1. 索引分类 在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。 2. 聚集索引&二级索引 而在在InnoDB存储引擎中,根据索引的存储形式&am…...
AutoTimes:通过大语言模型的自回归时间序列预测器
论文标题: AutoTimes: Autoregressive Time Series Forecasters via Large Language Models 作者:Yong Liu, Guo Qin, Xiangdong Huang, Jianmin Wang, Mingsheng Long 链接:https://arxiv.org/abs/2402.02370 机构:清华大学 …...
记录 | go与C/C++交互
Go语言是类C的语言,与C语言有着千丝万缕的联系,在Go语言的代码中可以直接调用C语言代码,但不支持直接调用 C。 Go 调用 C/C 的方式: C:直接调用 C API;C:通过实现一层封装的 C 接口来调用 C 接…...
B3623枚举排列
题目描述 今有 n 名学生,要从中选出 k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行,两个正整数 n,k。 输出格式 若干行,每行 k 个正整数,表示一种可能的队伍顺序。 输入输出样例 输入 #1复制 …...
vuex怎么防止数据刷新丢失?
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。为了防止 Vuex 中的数据在刷新时丢失,你可以采取以下策略: 持久化插件:…...
OpenGL ES 渲染 NV21、NV12、I420、YV12、YUYV、UYVY、I444(建议收藏)
本文主要讲解常见的 YUV 格式图像渲染方式,如果对 YUV 格式不是很熟悉的同学可以翻看旧文一文掌握 YUV 图像的基本处理,YUV 格式的介绍这里不再展开。 渲染 NV21、NV12 格式图像 NV21、NV12 可以看成同一种结构,区别只是 uv 的交错排列顺序不同。 渲染 NV21/NV12 格式图像…...
云计算的两地三中心和灾备介绍
两地三中心是指在不同的地理位置建立两个数据中心和一个灾备中心,其中一个数据中心为主数据中心,另一个数据中心为备用数据中心,灾备中心则用于备份数据和在主数据中心或备用数据中心发生故障或灾难时提供应急支持。 异地灾备则是指在不同的地…...
Spring Bean
Spring的配置方式 1、xml配置文件 2、基于注解的方式 3、基于Java的方式 Spring Bean的生命周期 1、通过构造器或工厂方法创建bean实例 2、为bean的属性赋值 3、调用bean的初始化方法 4、使用bean 5、当容器关闭时,调用bean的销毁方法 Spring inner beans …...
Linux的时间操作
当涉及到时间操作时,Linux提供了一系列函数和结构体来处理时间的获取、转换和操作。 time_t 别名 time_t 是 C/C 中用来表示时间的类型,通常被定义为整数类型。它通常用来存储从纪元(通常是1970年1月1日)到某一特定时间点之间的…...
2024-02-21 作业
作业要求: 复习课上内容 //已完成结构体字节对齐,64位没做完的做完,32位重新都做一遍,课上指定2字节对齐的做一遍,自己验证 //已完成两种验证大小端对齐的代码写一遍复习指针内容 //已完成完善顺序表已写出的…...
平台组成-监控服务
监控服务和其他服务不同,不是一个单一的微服务,准确来说是一个体系。每个微服务都集成了Actuator,通过Actuator对外提供微服务的运行状况。关于Actuator大家可以阅读这篇文章。《Spring boot——Actuator 详解》 其上是Micrometer&…...
探索分布式强一致性奥秘:Paxos共识算法的精妙之旅
提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代名词,因为当前一批常用的共识算法都是基于它改进的。比如,Fast Paxos 算法、Cheap Paxos、Raft 算法等。 由莱斯利兰伯特(L…...
使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决
作者:Bahubali Shetti 作为一名运营工程师(SRE、IT 运营、DevOps),管理技术和数据蔓延是一项持续的挑战。 简单地管理大量高维和高基数数据是令人难以承受的。 作为单一平台,Elastic 帮助 SRE 将无限的遥测数据&#…...
Docker 第十九章 : 阿里云个人镜像仓使用
Docker 第十九章 : 阿里云个人镜像仓使用 本章知识点: 如何创建镜像库,如何设置密码,如何登录与退出个人镜像仓,如何本地打镜像,如何将本地镜像推送到个人镜像库。 背景 在项目YapiDocker部署中,因读取mongo:latest 版本不一致,导致后续执行步骤的异常。遇到此场景…...
二、系统知识笔记-系统架构概述
一、系统架构定义 系统架构是指对一个系统的整体结构和组成部分进行描述和规划的过程。系统架构定义决定了系统的设计、开发和实施过程中的关键方向和决策。是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演…...
【高德地图】Android高德地图绘制标记点Marker
📖第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow🚩隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow🚩实现 InfoWindow…...
每天一个知识点 - 如何快速熟悉后端项目
入职一家新公司的时候,不可避免的就是接触到新公司的项目,有些项目一启动就是好几年,业务功能极其复杂,下面我总结几个方法让大家快速熟悉后端项目(图文结合) 用例图简析 用例是系统中的一个功能单元&…...
如何将cocos2d-x js打包部署到ios上 Mac M1系统
项目环境 cocos2d-x 3.13 xcode 12 mac m1 big sur 先找到你的项目 使用xcode软件打开上面这个文件 打开后应该是这个样子 执行编译运行就好了 可能会碰到的错误 在xcode11版本以上都会有这个错误,这是因为iOS11废弃了system。 将上面代码修改为 #if (CC_TARGE…...
pdffactory pro 8中文破解版
详细介绍 PdfFactory,PDF文档虚拟打印机,无须Acrobat即可创建Adobe PDF文件,创建PDF文件的方法比其他方法更方便和高效。支持将多个文档整合到一个PDF文件、增加字体和便签、PDF加密、去水印、压缩优化。 FinePrint,Windows虚拟…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
