
数据结构和算法
文章平均质量分 73
数据结构和算法
透小犹
不生气,不自卑。一群人谈笑,一个人行走。
展开
-
前缀表达式和后缀表达式 - C++代码
前缀表达式、后缀表达式的计算、转换规则原创 2022-07-05 11:48:46 · 5606 阅读 · 0 评论 -
快速乘算法/快速幂算法详解
快速乘算法问题已知正整数a、b、mod,求(a * b) % mod = ?其中,a、b的数量级很大,接近甚至大于mod的数量级a * b可能会溢出, 所以不方便直接相乘解决方案化乘法为加法,a * b相当于b个a相加代码实现int quik_mul(int a, int b, int mod) { long long output = 0; for (int i = 0; i != b; i++) output = (output + a) % mod; return out原创 2021-08-19 21:14:11 · 538 阅读 · 0 评论 -
排序算法模板-C++实现
排序算法准备工作命名规范调试宏准备工作命名规范本文所有排序算法模板使用统一的命名风格://注释template<typename _Ty>void x_sort(_Ty*element, int Size) { //insert code}_Ty是排序数据的类型。x是排序算法的名称,函数名统一为x_sort,如:冒泡排序的函数名为bullle_sort。element和Size是统一的参数名,其中element是指向Size为排序数据量。调试宏...原创 2021-05-29 01:25:48 · 115 阅读 · 0 评论 -
并查集-C++实现
目录并查集的抽象数据类型连通集的抽象数据类型连通集的表示并查集的基本操作并查集:数组实现连接X和Y结点检查X和Y结点是否连通查找结点所在的集合:带有路径压缩检查全局连通性完整代码并查集的抽象数据类型并查集是一个包含若干个结点的集合,结点之间的关系有连通和断开两种。连通关系具有传递性:即A与B连通,B与C连通,则A与C连通。由于连通关系的传递性,所有连通的结点构成一个连通集,如果一个并查集没有连通集,则该并查集是一个空集;如果一个并查集只有一个连通集,则该并查集全局连通;如果一个并查集有n个连通集,则原创 2021-05-26 18:05:22 · 802 阅读 · 0 评论 -
平衡二叉树-C++实现
目录前言:为什么需要平衡二叉树?二叉搜索树的局限性什么是平衡二叉树?平衡二叉树的递归定义平衡二叉树的功能平衡性调整:向上调整,4种方式右单旋左单旋LR双旋RL双旋插入:1种情况删除:3种情况求树的高度:后序遍历实现判断是否为平衡二叉树输出平衡二叉树的信息:中序遍历实现判断两棵AVL树是否相等平衡二叉树的赋值:防止内存泄漏清空:后序遍历,释放所有结点完整代码前言:为什么需要平衡二叉树?二叉搜索树的局限性相对于链表,二叉搜索树的静态查找具有高效性。但是,如果我们希望一棵二叉树既能实现查找操作,又能实现插入原创 2021-05-23 22:17:05 · 1155 阅读 · 0 评论 -
堆类模板-C++实现
目录什么是堆堆的基本操作:最大堆为例最大堆的插入:向上调整弹出最大数据:向下调整使用堆的注意事项完整代码什么是堆堆是一种重要的数据类型,是一种特殊的完全二叉树。堆的递归定义为:1)堆可以是一棵空树。2)如果堆不为空,则堆的根结点比所有子孙结点大(或小)。3)堆的子树也是堆。根据堆的定义,可以得出:从堆的根结点沿任意路径到叶节点,经过的结点具有有序性。例:如下图所示的一棵二叉树从树的根结点到叶节点的全体路径为:10 7 510 7 110 2全体路径都是从大到小的序列,并且该二叉树原创 2021-05-23 17:18:37 · 422 阅读 · 3 评论 -
遗传算法求解多元函数极值点-C++实现
通过一个简单的例子:求解的多元函数的极值点,初步理解遗传算法原创 2021-05-21 20:14:29 · 2715 阅读 · 4 评论 -
二叉树类模板完整代码-C++实现
//二叉树:链表实现#ifndef OCTREE_H#define OCTREE_H#include"OCstack.h"using OC::stack;#include"OCqueue.h"using OC::queue;#include<iostream>using std::cout;#ifndef _OC_BEGIN#define _OC_BEGIN namespace OC{#endif#ifndef _OC_END#define _OC_END }#原创 2021-05-18 23:37:25 · 587 阅读 · 0 评论 -
二叉树类模板-C++实现
二叉树是一种重要的数据结构,本文将用C++实现二叉树及其一些基本操作:遍历,插入,删除,查找……1)定义二叉树的模板类,并声明一些方法template<class T>class tree {private: struct TreeNode; //树的结点 typedef TreeNode*NodePtr; static T out_of_range; //防止迭代器越界的静态变量protected: NodePtr _root; //根结点public: class原创 2021-05-18 23:36:36 · 2175 阅读 · 0 评论 -
线性表容器list类模板-C++实现
线性表是一种常用的数据类型,本文将用双链表实现一个线性表结构的类模板1)线性表容器声明//declear class listtemplate<typename ElementType>class list {private: struct DataNode; //储存数据的结构体类型 typedef DataNode*NodePtr; //指向储存数据的指针类型 NodePtr head, tail; //数据的头结点,尾结点 int _size; //当前线性表的数据量原创 2021-05-12 23:22:53 · 515 阅读 · 0 评论