自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++实现二叉树的层序遍历

#include <iostream>#include <queue>#include <functional>using namespace std;struct TreeNode { int value; TreeNode *left; TreeNode *right; TreeNode(int value, TreeNode *left, TreeNode *right) :value(value), left(lef

2021-11-07 13:55:53 674

原创 C++实现DFS以及BFS

#include <iostream>#include <vector>#include <queue>#include <functional>using namespace std;// 有向图class Graph {public: // 初始化 Graph(int size) :table(vector<vector<int>>(size)), size(size) { f

2021-11-07 13:31:44 912

原创 SpringDataMongo用于多条件连接的LookupOperation构造工具

普遍使用的{from, localField, foreignField, as}形式的$lookup只实现单条件连接表,但是有时候我们会碰到需要多条件的连接,起始mongodb在3.6版本之后已经支持了这种操作(详情见这里),但是SpringDataMongo的MongoOperation(MongoTemplate)还没有去适配。这里提供了一个简单的工具类LookupLetPipelineOperation.javapackage vip.starhouse.propertyservicemp..

2021-07-28 18:10:53 1145 1

原创 Gin的基本使用

安装:go get github.com\gin-gonic\gin示例程序package mainimport ( "fmt" "net/http" "path" "github.com/gin-gonic/gin")type Account struct { Username string `json:"username"` Password string `json:"password"` Avatar string `json:"avatar"`.

2021-07-25 18:32:26 281

原创 protobuf与其在go中的简单使用

以proto3为例,proto2语法:[看这里](Language Guide | Protocol Buffers | Google Developers)基本语法一个最简单的Message定义syntax = "proto3";package model;option go_package = "protos/model";message Student { int64 id = 1; string name = 2; int32 age = 3;}.

2021-07-21 13:26:31 1282

原创 解决突然连不上虚拟机问题

打开VMware虚拟机网络编辑器更改设置-> 选中VMnet8 设置子网ip为你自己宿主机的ip网段点击Net设置 设置网关为宿主机ip地址重启虚拟机 ifconfig 查看 dhcp自动分配的新虚拟机IP测试即可

2021-04-04 22:12:31 268

原创 Spring整合Mybatis&Druid

@Configurationpublic class MybatisConfig { @Bean("SqlSessionFactory") public SqlSessionFactory getSqlSessionFactory() throws IOException, SQLException { /** * 加载数据库配置文件 resources目录下的dbconfig.properties * */ InputS

2021-02-07 12:15:19 217 1

原创 Jdk8以上Javafx配置

Windows环境,OpenJDK14 配置idea平台针对JDK版本>8的情况,<=8的话不需要首先加入官网下载对于SDK:https://gluonhq.com/products/javafx/解压缩到合适位置,比如:D:\JFX15Idea中设置系统环境变量:将对应lib填入右键项目点击Open Module Settings - Global Libraries ->把对应的lib文件夹和bin文件夹加入Edit Configurations: 加入.

2021-01-25 21:45:59 1482

原创 查找-散列表查找

散列表查找(哈希表)存储位置 = f(关键字)散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。我们把这种对应关系f称为散列函数,又称为哈希(Hash)函数。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或者哈希表。散列技术既是一种存储方法也是一种查找方法。但是它主要是面向查找的存储结构。散列技术最适合求解问题是查找与给定值相等的记录。散列函数构造方法直接定址法:f(key) = a x

2020-08-25 14:09:49 868

原创 查找-二叉排序树

二叉排序树二叉排序树(Binary Search Tree)又称为二叉查找树。他或是一颗空树,或者是具有下列性质的二叉树。若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值;它的左右子树也分别为二叉排序树。二叉排序树的查找操作#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0typedef int

2020-08-21 15:52:32 2005

原创 查找-线性索引查找

线性索引查找索引就是把一个关键字与它对应的记录相关联的过程,一个索引由若干个索引项构成,每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。索引技术是组织大型数据库以及磁盘文件的一种重要技术。索引按照结构可以分为线性索引、树形索引和多级索引。这里只探讨线性索引,即将索引项集合组织为线性结构,也称为索引表。其中又分为:稠密索引、分块索引和倒排索引。稠密索引稠密索引是指在线性索引中,将数据集中的每一个记录对应一个索引项。对于稠密索引这个索引表来说,索引项一定是按照关键码有序的排列。而如

2020-08-20 15:05:47 159

原创 查找-有序表查找

折半查找我们把每次取中间记录查找的方法叫做折半查找。又称为二分查找。他的前提是线性表中的记录必须是关键码(数据项)有序的(通常是从小到大有序)。线性表必须采用顺序存储。其时间复杂度为O[logn]其时间复杂度远远小于顺序查找,但是对于需要频繁执行插入或者删除操作的数据集来说,维护有序的排序会带来不少开销,不建议使用。int Binary_Search(int *a, int n, int key){ int low, high, mid; low = 1; high = n

2020-08-20 14:31:44 269

原创 图-关键路径算法

关键路径(CriticalPath)我们把路径上各个活动所持续时间之和称为路径长度,从源点到汇点具有最大长度的路径叫关键路径,在关键路径上的活动叫做关键活动.。AOV网和AOE网算法用到的4个关键变量:**etv (Earliest time of vertex):**事件的最早发生时间,即顶点k的最早发生时间**ltv(Latest time of vertex):**事件最晚发生时间,即顶点k的最晚发生时间**ete(Earliest time of edge):**活动最早开工时间

2020-08-17 13:49:08 2219 1

原创 图-拓扑排序

拓扑排序我们会把施工过程、生产流程、软件开发、教学安排等都当成一个项目工程来对待,所有的工程都可分为若干个活动的子工程。由这而来的图首先一定是一个无环图。而之前学习的最短路径问题和最小生成树问题是关于有环图的。在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系。这样的有向图为顶点表示活动的网,我们成为AOV网(Activity On Vertex Network )。AOV网中的弧表示活动之间存在某种制约关系,比如在学习数据结构这门课之前必须先学习C语言等等。这个场景在我们生活中很常

2020-08-15 13:52:34 139

原创 图-最短路径之弗洛伊德算法

多源点最短路径-弗洛伊德算法(Floyd)求所有顶点到所有顶点的最短路径,而迪杰斯特拉是求单源点到所有顶点的最短路径。几个用到的变量和数组的含义:变量k:中转顶点坐标数组P:存放顶点之间的中转结点的数组,比如:P[1][4] = 2;//顶点1到顶点4途径顶点2P[2][4] = 3;//顶点2到顶点4又途径顶点3P[3][4] = 4;//顶点3到顶点4经过顶点4,即表明3->4之间无中转顶点了。从而得: 当P[v][k] == k的时候,即走到了路径的最后。

2020-08-14 14:19:48 144

原创 图-最短路径之迪杰斯特拉算法

最短路径在网图和非网图中,最短路径的含义是不同的。对于非网图,由于其边上没有权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径。而对于网图,最短路径,是指两顶点之间经过的边上权值之和最少的路径。和最小生成树的区别:最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。最短路径是从一点出发,到达目的地的路径最小。Prim 和 Dijkstra 代码非常相似,都是这样一个大体步骤:初始化,找最小值,更新权值数组。注意对比他们的代码。迪杰斯特拉算法(Dij

2020-08-13 14:24:38 219

原创 图-最小生成树之克鲁斯卡尔算法

克鲁斯卡尔算法(Kruskal)克鲁斯卡尔(Kruskal)算法从另一途径求网的最小生成树。其基本思想是:假设连通网G=(V,E),令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点分别在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边而选择下一条代价最小的边。依此类推,直至T中所有顶点构成一个连通分量为止 [2] 。和普利姆算法以顶点去构建最小生成树不同的是,克鲁斯卡尔算法以边来构建最小生成树。克鲁斯

2020-08-12 15:56:49 565

原创 图-最小生成树之Prim算法

普利姆算法(Prim)1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;3).重复下列操作,直到Vnew = V:a.在集合E中选取权值最小的边<u, v>,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);b.将v加入集合Vnew中,将<u, v>边加入集合Enew中;4).

2020-08-10 18:16:05 252

原创 图-深度优先搜索和广度优先搜索

深度优先搜索(Depth First Search, DFS)深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。可以看到这里面运用了递归的思想,下面给出了DFS算法基于邻接矩阵与邻接表的不同算法。对于基于邻接矩阵的算法,由于其是一个二维数组,要查找每个顶点的邻接点需要访问

2020-08-10 18:14:11 223

原创 图-邻接矩阵与邻接表

邻接矩阵邻接矩阵(Adjacency Matrix)是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn} [1] 。G的邻接矩阵是一个具有下列性质的n阶方阵:①对无向图而言,邻接矩阵一定是对称的,而且主对角线一定为零(在此仅讨论无向简单图),副对角线不一定为0,有向图则不一定如此。②在无向图中,任一顶点i的度为第i列(或第i行)所有非零元素的个数,在有向图中顶点i的出度为第i行所有非零元素的个数,而入度为第i列所有非零元素的个数。③用邻接矩阵法表示图共需要n^2

2020-08-10 08:12:11 1191

原创 哈夫曼树的构造与编码

#include <iostream>#include <cstring>using namespace std;/*顺序结构*/typedef struct { int weight; int parent, lch, rch;} *HuffmanTree, HuffmanNode;typedef char** HuffmanCode; /*构造哈夫曼树*/void CreateHuffmanTree(HuffmanTree& HT, int n) {

2020-07-11 11:15:19 461

原创 List Leaves

题目:Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives...

2020-03-30 15:02:54 99

原创 北京时间转UTC

#include <stdio.h>/*BJT->UTC*/int main(int argc, char **argv){ int BJT, UTC; int hour; int minute; int u_hour, u_minute; scanf("%d", &BJT); if(BJT<0 || BJT >2359) return -...

2020-03-17 14:13:10 342

原创 C二分查找

代码:#include <math.h> int BinarySearch(List L, ElementType X){ int high = L->Last; int low = 1; if(L->Data[high] == X){ return high; } int flag = floor((high + low) / 2...

2020-03-12 11:36:06 132

原创 队列的习题

假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。(要求用到队列)#include <stdio.h>#include "../SqStack.h"#include "../Queue.h"#define END '@'bool...

2019-11-20 14:31:06 910 1

原创 只有rear指针的环形循环队列

#include <stdio.h>#include <malloc.h>#define MAXSIZE 10/*元素个数:(rear - front + maxsize)&maxsize队列满:(rear + 1)%maxsize == front下一个入队元素位置:(rear + 1)%maxsize下一个出队元素位置:(front + 1)%ma...

2019-11-20 13:44:34 441

原创 简单的中缀表达式转换为逆波兰表达式

#include <stdio.h>#include "../SqStack.h"/*双目四则运算符:+ - * / (部分)*/bool IsOperator(char ch){ return ch == '+' || ch == '-' || ch == '*' || ch == '/' ? true : false;}int OprPrior(char ...

2019-11-18 19:57:08 341

原创 栈的算法练习题

试写一个判别表达式中开、闭括号是否配对出现的算法。我的实现#include "../SqStack.h"#include <iostream>#include <stdio.h>bool BracketMatch(char exp[]){ SqStack S; InitStack(S); int i = 0; char op; ...

2019-11-17 16:58:09 399

原创 栈的例题

试写一个算法,识别一次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1 和序列2 中都不含字符‘&’,且序列2 是序列1 的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。我自己的实现#include "../SqStack.h"#include <iostream>#i...

2019-11-17 16:31:17 339

原创 栈的算法设计题

假设如题3.1 所属火车调度站的入口处有n 节硬席或软席车厢(分别以H 和S 表示)等待调度,试编写算法,输出对这n 节车厢进行调度的操作(即入栈或出栈操作)序列,以使所有的软席车厢都被调整到硬席车厢之前。#include "../SqStack.h"#include <iostream>#include <stdio.h>using namespace std...

2019-11-17 16:05:54 545

原创 递归例题

1.将下列递推过程改为递归过程void ditui(int n){ int i = n; while(i > 1){ printf(i--); }}void digui(int n){ if(n > 1){ printf(n); ditui(n - 1); }}2.把递归过程改为非递归过程void test(int &sum){ int ...

2019-11-11 16:27:36 895

原创 栈的应用-汉诺塔问题

#include <stdio.h>/*盘子按照从小到大顺序从高到低摆放 n-1 摆放在 n 的上面*/void Move(char, int, char);void Hanoi(int, char, char, char);int main(){ Hanoi(3, 'x', 'y', 'z'); return 0;}void Move(char c1,...

2019-11-08 19:01:20 213

原创 出栈序列问题

今天看到了一道题目,进栈顺序为1,2,3,写出所有可能出站序列。我就想着1,2,3进去不是只有321一种可能吗?一看答案是有5种,然后就很蒙蔽。搜啊搜,发现了问题所在,即不一定是一起进栈然后一起退栈的,这两部是可以同时进行的。比如:1入 出栈顶 2,3入 出全部 得到 1 3 21入 出栈顶 2入 出栈顶 3入 出栈顶 得到 1 2 31 2 3入 出全部 得到3 2 11 入 2入 ...

2019-11-04 15:16:09 231

原创 数据结构之栈相关应用

1.十进制转换八进制void Conversion(SqStack S){ InitStack(S); int N = 0; scanf("%d", &N); while(N){ Push(S, N%8); N = N/8; } while(!StackEmpty(S)){ int e; ...

2019-11-03 16:55:13 107

原创 C语言函数指针&回调函数

当年学C的时候是很粗略的过了一遍,很多语法都没涉及到,比如这个函数指针和回调函数,在这里复习一下函数指针#include <stdio.h>int max(int a, int b) { return a > b ? a : b;}void printInfo(const char *context) { printf("%s\n", context);}voi...

2019-10-20 17:03:46 129

原创 单链表的基本操作和例题

单链表的基本操作和例题(C/C++)基础操作/*数据结构定义*/typedef int ElemType;typedef struct node { ElemType data; struct node* next;}Node, LinkList;/*单链表的创建*/void CreateLinkList(LinkList*& L) { L = (LinkList*...

2019-10-16 13:25:58 254

gtk3api文档html离线阅读

Gtk3 Api文档离线,入口为stable.html.是直接从网站上面下载下来的html页面而并不是chm文档。缺了好几个js和css样式文件不过应该不影响阅读和使用

2020-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除