数据结构与算法
文章平均质量分 65
数据结构与算法学习笔记
BoBo玩ROS
时刻提醒自己:“不要太把自己当回事!”
展开
-
C++课程设计 学生成绩管理系统
学生成绩管理系统1.编译器Dev c++;2.系统功能需求分析2.1学生成绩管理系统需求分析包含学生的基本信息:姓名,性别,生日。学生的成绩信息:学号,五科成绩,五科课程的名字(不同专业学生有不同的课程),总分,专业,绩点等。学生成绩管理系统具有以下这些功能:(1)学生成绩的录入:录入新的学生成绩等信息;(2)学生成绩的添加:添加新的学生成绩等信息;(3)学生成绩的删除:删除不需要的学生成绩等信息。(4)学生成绩的查找:查找你需要的学生成绩等信息。(5)学生成绩的修改:修改错误的学生原创 2021-01-11 19:26:09 · 23737 阅读 · 5 评论 -
C++ 两个类通过智能指针进行访问操作
如果您需要在不同的类之间共享和传递函数,并允许动态更改函数,那么将函数作为回调函数传递可能更适合。如果您只需要在一个类中调用另一个类的函数,并且需要访问该类的成员变量,那么将类的指针传递给另一个类可能更合适。在C++中,有多种方法可以实现将一个函数传递给另一个类,并在该类中调用该函数。您可以选择将函数作为回调函数或通过类的成员函数来实现。函数中,我们通过调用成员函数指针来调用传递的回调函数。类型,用于表示回调函数的类型。类的回调函数类型,并将其作为参数传递给。类中定义回调函数,并将其传递给。原创 2023-08-25 14:38:37 · 290 阅读 · 0 评论 -
C++ 智能指针
记住,在使用智能指针时,你不需要手动释放内存,它们会在适当的时候自动释放所管理的对象。是C++14引入的函数模板,用于创建智能指针并自动分配和初始化所管理的对象。每种智能指针都有不同的所有权和内存管理方式,适用于不同的场景。根据你的需求和所有权关系,选择适合的智能指针可以提高代码的安全性和可维护性。是一种弱引用,它不会增加对象的引用计数,也不能直接访问对象的成员函数或成员变量。是否仍然有效(即是否指向一个有效的对象),如果有效,则返回一个指向该对象的。来访问由智能指针管理的对象,就像访问原始指针一样。原创 2023-08-25 14:29:17 · 169 阅读 · 0 评论 -
C++ 定义结构体
在上述代码中,我们定义了一个名为PID_gain_vel的结构体,包含了六个成员变量:p、i、d、power_vel_pid、last_error_vel和last_d_error_vel。在PID_gain_vel.cpp文件中,我们定义了两个函数:initPID_gain_vel用于初始化结构体,modifyPID_gain_vel用于修改结构体成员。这段代码首先初始化了一个名为pid1的PID_gain_vel结构体,然后通过调用usePID_gain_vel函数使用了该结构体的成员变量。原创 2023-08-25 14:23:52 · 1311 阅读 · 0 评论 -
数据结构基础知识
数据结构第一章:数据结构的基本概念定义在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。逻辑结构逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立原创 2022-04-16 13:50:32 · 370 阅读 · 1 评论 -
动态规划与贪心算法
1 动态规划1.1 最优子结构当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。在动态规划算法中,利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。1.2 重叠子问题在用递归算法自顶向下解此问题时,每次产生的子问题并不总是新问题,有些子问题被重复计算。动态规划算法正是利用了这种子问题的重叠性质,对每个子问题只解一次,然后将其解保存在一个表格中,当再次需要解此问题时,只是简单地用常数时间查看一下结果。2 贪心算法2.1 贪心选择贪原创 2021-12-23 16:23:06 · 856 阅读 · 0 评论 -
动态规划 最长公共子序列
最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = "abcde", text2原创 2021-09-20 19:20:03 · 132 阅读 · 0 评论 -
动态规划 最大子段和问题
最大子段和问题描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000原创 2021-09-16 21:51:51 · 846 阅读 · 0 评论 -
分治 从中序与后序遍历序列构造二叉树
从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:思路:中序遍历: 左子树、根节点、右子树后序遍历:左子树、右子树、根节点后序序列中最后一个下标(post_index)对应元素为根节点,通过根节点找到中序序列中根节点所在下标(inorder_root),可以确定左右子树的范围:原创 2021-09-20 17:10:43 · 125 阅读 · 0 评论 -
分治 最大子段和问题
最大子段和问题描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000原创 2021-09-16 22:09:23 · 130 阅读 · 0 评论 -
递归 从前序与中序遍历序列构造二叉树
从前序与中序遍历序列构造二叉树给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。示例1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]思路:前序遍历:根节点,左子树,右子树[preleft,preri原创 2021-09-19 19:50:20 · 114 阅读 · 0 评论 -
数据结构--栈的应用
中缀转前缀、中缀转后缀、中缀求值Stack.h#include<stdio.h>#include<stdlib.h>typedef char ElemType;typedef struct Stack{ ElemType data; struct Stack *next;}Stack,*StackPtr;//初始化栈void InitStack(StackPtr &S){ S=NULL;}//判空bool StackEmpty(StackPt原创 2021-01-11 19:07:43 · 116 阅读 · 0 评论 -
数据结构课程设计 校园导航系统
校园导航系统【问题描述】当对校园参观时,会遇到这样的问题:如果从校园的某个位置出发,参观到校园中的所有景点,怎样设计路线,使参观者既能参观所有景点又使走的路程最少。【数据描述】定义一个邻接矩阵存储结构,用来存储点和边的信息。定义一个辅助数组closedge,该数组包含两个分量,lowcost记录从U到V-U具有最小代价的边,adjvex记录改边依附于U中的顶点。typedef char ElemType;typedef struct {ElemType vexs[max];int arcs原创 2021-01-11 18:13:50 · 4287 阅读 · 0 评论 -
数据结构课程设计 查找系统
查找系统1. 问题描述设计一个查找系统,通过选择各种查找方法,输入数据后能完成查找并输出结果。(1)设计一个菜单将要实现的功能显示出来,并有选择显示;(2)分别实现顺序、折半查找、哈希表查找(哈希表可选取任意一种方法实现);(3)二叉排序树必须实现构建、查找、插入、删除四个基本操作。2. 算法思想(1)顺序查找:从查找表的一端开始,将给定值与逐个记录的关键字进行比较,若相等,则查找成功,给出该记录在查找表中的位置。若遍历整个查找表,仍未找到关键字,则查找失败。(2)折半查找:在有序表中,原创 2021-01-11 18:04:49 · 1262 阅读 · 0 评论 -
递归算法总结
1原创 2020-01-02 19:25:29 · 174 阅读 · 1 评论