自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

└┼﹡keep it simple,stupid■┐*…

└┼﹡keep it simple,stupid■┐*…

  • 博客(122)
  • 资源 (5)
  • 收藏
  • 关注

原创 ngnix链接删除index.php和配置sitemap.xml

在ngnix配置文件(/www/server/panel/vhost/nginx/www.lwlwq.com.conf)中加入以下配置,去除自定义自定义链接中的index.php内容。location / { try_files $uri $uri/ /index.php?$args;} 在ngnix配置文件(/www/server/panel/vhost/nginx/ww...

2021-12-11 19:23:30 1490

原创 克隆图

给定连接的无向图中节点的引用,返回图的深度副本(克隆)。图中的每个节点都包含一个val (int)及其邻居的列表(list [node])。代码其中,结点详情信息如下:class Node {public: int val; vector<Node*> neighbors; Node() {} Node(int _val, vector<Node*> _neigh...

2021-12-10 22:52:23 204

原创 完全平方数

完全平方是指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有两个。代码解题思路:把当前的数压入队列,求它的平方根然后对余数继续压入队列。如果余数为0,则表示已经得出了这个数的完全平方数的数量。class PrefectSquare{public: int numSquares(i...

2021-12-10 22:50:05 831

原创 有效的括号对

给定一个只包含字符'(‘,’)’,'{‘,’}’,'[‘和’]’的字符串,判断输入字符串是否有效。输入字符串在下列情况下有效:开括号必须由相同类型的括号关闭。开括号必须按正确的顺序关闭。注意,空字符串也被认为是有效的。代码这里使用的堆来实现的有效括号对的判断。遍历字符串,当堆为空时,把字符压入堆中,非空时,则判断当前的字符与堆中的字符是否匹配。class Parenthese {public:...

2021-12-10 22:47:31 125

原创 每天的温度

给定一个每日温度T的列表,返回这样一个列表:对于输入中的每一天,它告诉您需要等待多少天,直到温度变暖(后一个值比前一个大)。如果未来没有一天这是可能的,代入0。代码解题思路:反向遍历温度列表,每次把遍历的值和堆顶的值(堆顶存放的是索引值)进行比较,如果大于或者等于堆值,则堆进行出栈操作,直到堆为空或者出现堆顶的值比当前值大,则比较结束,得出结果,并把它的索引值加入堆顶。class Temperat...

2021-12-10 22:47:00 115

原创 计算逆波兰式

逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。代码解题思路:根据逆波兰式的原理,操作符号都在操作数的后面,由此,我们就可以对逆波兰式数组进行遍历,如果是操作数,则先把操作数压入栈中,当发现操作符时,就可以把操作数出栈,进行相应的运算。以下代码假设传入的数组都是正确的逆波兰式,并且操作符都是有2个操作数的。class RP...

2021-12-10 22:44:58 182

原创 van Emde Boas tree

介绍van Emde Boas tree是一种适用于0-u数据存储的一种数据类型。它每次根据u的一半来依次递减,直到最后减少到2为止。对数据有一定要求:要求u是2的2k或者2k+1次方。单个结点的结构如下: 每个结点包含以下数据:其中u是当前结点的cluster的数量;min和当前结点中最小结点的数,而且最小值不出来在cluster当中; max是当前结点中最大结点的数;其...

2021-12-10 21:12:36 109

原创 二叉查找树

介绍二叉查找树是按二叉树结构来组织的。它的每个结点分为数据域和指针域,数据域包括key值和卫星数据,指针域包括父结点指针,左孩子指针以及右孩子指针。而且,二叉查找树满足特性左孩子的key值<=父结点的key值<=右孩子的Key值。实现二叉查找树的结构如下:typedef struct _Node{ int data; _Node* parent; _Node* ...

2021-12-10 21:12:24 100

原创 红黑树

介绍红黑树是一种稳定的树,前面说到二叉查找树有些缺点就是,如果是链式插入的话,就会造成树的高度和随机插入的高度相差很大的问题,导致效率低下。而红黑树解决了这个问题,他保证了以下5个特性:1.结点颜色非红即黑。2.根结点颜色一定是黑色的。3.红色结点的孩子颜色一定是黑色的。4.叶子结点的颜色一定是黑色的。5.从任何一结点到叶子结点,中间的黑色结点数量一致。实现定义结构信息如下:typ...

2021-12-10 21:12:20 101

原创 最小生成树kruskal算法

介绍最小生成树,就是在一个连通无向图中,每条边都有一个权重w,我们可以找到一个无环的,能将所有顶点连接起来的,并且拥有最小权重的树。kruskal算法就是其中一个计算最小生成树的算法,这个算法中用到了一个数据结构不相交集合。kruskal算法属于贪婪算法,它的主要思想就是,每次选择一条权重最小的边加入到最小生成树集合中。kruskal算法的形象化实现kruskal的实现如下...

2021-12-10 21:12:14 104

原创 二叉树的遍历(迭代、递归)

二叉树的遍历包含3种遍历方式,前序遍历、中序遍历以及后序遍历。代码首先定义相关结点信息,包含左右结点以及值:struct TreeNode { char val; TreeNode *left; TreeNode *right; TreeNode(char x) : val(x), left(NULL), right(NULL) {}};前序遍历就是先遍历根节点,然后遍历左结点,最后遍历...

2021-12-10 21:12:10 69

原创 二叉树之对称树

对称树就是基于根结点,左右两边的结点相同,就像照着镜子一样。代码我们来实现判断一颗二叉树是否是对称树,首先定义结点信息:struct TreeNode { char val; TreeNode *left; TreeNode *right; TreeNode(char x) : val(x), left(NULL), right(NULL) {}};以下是迭代版本的对称树判断: bool...

2021-12-10 21:12:03 158

原创 二叉树的最大深度

许多树的问题可以通过递归来解决,一般的,我们可以自下而下或自下而上递归的解决树的问题。代码首先,先定义树的相关结点信息,包含树的左右节点和节点保存的数据:struct TreeNode { char val; TreeNode *left; TreeNode *right; TreeNode(char x) : val(x), left(NULL), right(NULL) {}}; 以...

2021-12-10 21:11:57 61

原创 依据前序、中序和后序确定二叉树

依据前序、中序以及中序、后序可以唯一确定一棵二叉树,但是依据前序、后充不可以唯一确定一棵二叉树。代码struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};根据以上的结点信息,首先来实现中序、后序是如何确定一棵唯一二叉...

2021-12-10 21:11:51 1313

原创 二叉树的路径和

给定一棵二叉树和一个和,确定该树是否有根到叶的路径,以便将路径上的所有值相加等于给定的值,这就是路径和。其中的叶指的是叶结点(没有孩子)。代码首先,定义结点信息:struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};...

2021-12-10 21:11:41 106

原创 求二叉树随机两结点的最低公共祖先

在两个节点p和q之间定义的最低公共祖先是T(祖先)中同时具有p和q作为后代的最低节点(在这里,我们允许一个节点作为其自身的后代)。代码最低公共祖先的实现方法: 所有结点都唯一 p和q2个结点都存在struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), ...

2021-12-10 21:11:35 98

原创 二叉树的序列化和反序列化

序列化是将数据结构或对象转换为位序列的过程,以便将其存储在文件或内存缓冲区中,或通过网络连接传输,以便稍后在相同或另一个计算机环境中重新构建。代码struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};二叉树的结点信息...

2021-12-10 21:11:27 64

原创 图之广度优先搜索算法

广度优先算法是很多重要图算法中比较简单的一个,它的主要思想是先从源顶点像四周发散查找,先查找距离源顶点距离为k的所有顶点,然后再查找距离为k+1的所有顶点(k = 1,2,3….)。在广度优先算法中,每个顶点都标色,最初所有顶点都是白色,顶点第一次被发现,则标记为灰色,而黑色标记旁边只能有灰色标记或黑色标记,不能有灰色标记。也就是说一个图以灰黑色逐渐向外扩散。灰色是黑色和白色的隔离...

2021-12-10 21:10:14 533

原创 图之深度优先搜索算法

图的深度优先搜索算法是一个一条路一直走到黑的算法,只要这条路径还可以找到顶点则就一直找下去,直到找不到顶点时,才沿原路返回,从其它顶点继续查找。深度优先搜索会产生一个深度森林,由几个深度树组成。在查找的过程中,会记录下来每个顶点被发现的时间以及每个顶点沿原路返回时结束的时间。所以一定是开始时间小于结束时间的。首先,先定义出每个顶点和邻接表的属性:#define VERTEX...

2021-12-10 21:09:52 435

原创 单向链表

介绍单向链表是一个线性数据结构。它和数组不同之处就在于它是用指针把所有的结点连接起来,而不是一大块连续内存。实现单向链表的结构比较单一:typedef struct _Node{ int data; struct _Node* next;}Node;typedef struct _List{ Node* head; Node* tail; int length;}List;每...

2021-12-10 21:04:33 93

原创 c语言学生管理系统

介绍这是一个比较简单的纯c实现的学生管理系统,主要实现就是链表+结构体。基本功能有增加,插入,查询。因为删除比较方便的原因这里选用了双向链表,当然单身链表也是可以的,但是删除的话就稍微麻烦些。好了,闲话就这么多了,下面来讲解下代码的实现。实现首先定义学生的信息、链表的信息以及课程的一些相差信息,如下:#define MAX_NAME_LENGTH 20#define MAX_COURSE_NAM...

2021-12-10 21:03:27 208

原创 c语言学生管理系统之文件操作

介绍前面写了一篇学生管理系统demo,但是觉得还是少了c中关键的文件相关操作,所以在这里也顺带把文件操作也加到学生管理系统里面去。当然,这里就没有学生系统那么复杂了,主要还是文件的操作。实现首先还是照旧,先定义学生信息和课程信息,但是这里就没有用链表存储学生信息了,直接放文件里,要的时候再拿,因为主要是讲解文件操作,故没有作缓存:#define MAX_NAME_LENGTH 20#define...

2021-12-10 21:02:52 747

原创 我的pmp之路

从事IT行业有5年了,担任管理岗位也有2年时间了,但是自我觉得,在工作当中,对于一些事情总是有些力不从心的感觉。可能是自己学的就是IT专业,也没有从受过专业的管理相关学习,所以决定在这方面下点功夫。正好,从网上了解到光环是一家全国实力非常雄厚的培训机构,经过一段时间的了解和他们前期视频的观看,我报名了9月份PMP备考的班级。还记得上一次学习还是大学那会了,再也没有认真的去专门学习一...

2021-12-07 22:42:29 61

原创 c++ boost shared_ptr的使用

介绍 本文主要就是一些对boost::shared_ptr的一些翻译和个人见解,主要来源还是boost官网。 share_ptr模板类储存一个动态的分配对象,一般使用c++的new表达式。这个对象的指针会在最后一次shared_ptr析构的时候或者是reset的时候删除掉。一般的用法如下:shared_ptr<X> p1( new X );shared_ptr<void>...

2021-12-07 22:42:13 1108

原创 centos更换163官网yum源

因为用centos的时候出现过用yum命令安装不了工具的时候,当时很郁闷,所以特此把更新yum的过程记录下来,方便后来者。1.备份首先备份文件CentOS-Base.repo,如果没有此文件,则跳过此步:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载然后下载对...

2021-12-07 22:41:50 217

原创 c++ boost enable_shared_from_this类的应用

介绍boost的enable_shared_from_this是一个模板类,它的使用是一个基于成员函数返回shared_ptr。有关shared_ptr的使用,请参考我的另一篇文章boost shared_ptr的使用。boost::enable_shared_from_this主要就是shared_from_this这个函数,它的主要代码如下:namespace boost{...

2021-12-07 22:41:35 1083

原创 php 5.5配置Zend OPcache

最近看到php5.5x有自带php回事功能,只要安装的时候带上参数就可以,于是自己就升级现有的php,将加速功能装上,能有效加速php的速度。但是在使用中还是遇到了一些问题,我是如下安装的:./configure --prefix=/usr/local/php --with-config-file-path=/etc/ --with-apxs2=/usr/local/apache2...

2021-12-07 22:39:34 123

原创 cmake+boost生成Makefile

最近在写一个跨平台的项目,因为要在Linux下面编译,自然就会用到makefile文件,但是又不想自己写,所以用工具cmake来自动生成再好不过了。因为使用了boost库,中途还遇到了些问题,于是,便记录下来。首先,设置boost库的安装目录:set(BOOST_ROOT /usr/local/boost)因为本人的boost安装目录为/usr/local/boost,所以...

2021-12-07 22:39:14 435

原创 插入排序

介绍算法导论中第一个讲的算法就是插入算法,算是一个比较简单的算法,理解起来也不是很难。实现#include <algorithm>#include <iostream>using namespace std;template<class T>void print(T* t, int length){ for (int i = 0; i &l...

2021-12-07 22:38:54 38

原创 合并排序

介绍合并排序算法主要用到分治法的思想,先把问题分解成小问题,然后解决小问题,最后把小问题的结果合并成总的结果。借用下算法导论的图:算法从最高层开始分解,把数组对半分解成更小的数组,直到分解成最小为止,然后从最低层开始,逐层开始排序合并,直至最高层,把结果合并,排序结束,这就是分治法的思想。实现代码如下:#include <iostream>#include <c...

2021-12-07 22:38:48 118

原创 快速排序

介绍快速排序也是基于分治法来实现的,这在合并排序中就有说到过。它的主要实现原理就是,在数组t[n]中,选出一个数作为比较值,然后小于这个数的值放左边,大于这个数的值放右边,它则在中间;然后递归依次去操作左边和右边,如此反复,直到非空,则比较完成,而结果就已经排序好了。实现首先,先计算出中间值的位置:int partition(int* a, int start, int end)...

2021-12-07 22:38:30 74

原创 优先级队列基于堆的实现

介绍堆的作用很多,比如可以实现排序算法,如堆排序此文就是基于堆的一种用法。下面,来看看基于堆的高效优先级队列的实现。当然和堆排序一样,优先级队列也有2种形式:最大优先级队列和最小优先级队列,这里主要讲解下最大优先级队列。有关于建堆buildMaxHeap以及维持堆特性的函数maxHeapify在堆排序中有实现,所以这里就不重复了。有不知道的话,可以去堆排序里面看看实现。实现int ...

2021-12-07 22:38:26 293

原创 堆排序

介绍堆排序是建立在数据结构堆上面而形成的一种排序算法。堆是一个数组对象,也是一颗完全二叉树,所以对于数组t[N],某个结点node,有以下结论: 父节点:inline int parent(int node){ return node >> 1;}左子叶:inline int left(int node){ return node << 1...

2021-12-07 22:38:22 45

原创 基数排序

介绍基数排序是一个建立到稳定排序之上的算法,也是为了改善计数排序的算法,为什么呢?前面说到了计数排序因为最大值和数组长度如果相差很大的话,就会浪费很多内存,因此计数排序比较适合用在一个比较小范围之间的算法。而基数排序却可以解决这个问题,因为基数排序是根据每个整数位上的值来判断的,那个单个位数上的值最大不过也就是9而已,所以,基数排序基本只是需要其长度的缓存数组。实现既然基数排序是建...

2021-12-07 22:38:17 122

原创 计数排序

介绍计数排序是一个有别于比较排序的算法,因为它不是依据比较而完成的排序算法。它比所有的比较排序都快,但是同时它耗用的内存也是很大的,因为它不仅需要一个存放结果的缓存,还需要一个计数的缓存。而计数排序中的元素必须是0到k之间的数据,而这个k也是计数缓存的最大长度,所以如果数据只有10个,而最大值却到了1000,或者更大的话,则比较浪费内存,当然这只是一个比喻,10个数据,也不用什么计数排序了...

2021-12-07 22:38:13 45

原创 中位数与顺序统计量

介绍中位数是一个已排序元素的中点元素,数组长度为奇数,则中位数是(length+1)/2,唯一;如果长度是偶数,则中位数有2个,length/2和length/2+1。而中位数算是一个特殊的顺序统计量。实现求顺序统计量也用到了分治法,即快速排序的求中间值的模型:int partition(int* a, int start, int end){ /// 选出数组尾数为中间值 ...

2021-12-07 22:38:10 297

原创

介绍栈是一种数据结构,它是动态的,实现了一种后进先出的策略。出栈的永远是最晚入栈的元素。实现首先,我们定义一个栈以及栈的长度:static int* g_stack = nullptr;static int g_maxLength = 0;static int g_length = 0;此处用了c++11支持的nullptr来取代指针的0或NULL值。默认栈、最大长度和...

2021-12-07 22:38:06 67

原创 队列

介绍队列就和栈一样的,都是动态集合,不过2者相反,栈是后进先出,而队列是先进先出的策略。最先出来的永远都是最先进去的,就像排队买票一样。实现首先,先定义队列的一些属性:static int* g_queue = nullptr;static int g_maxLength = 0;static int g_head = 0;static int g_tail = 0;...

2021-12-07 22:38:00 65

原创 双向链表

介绍链表是一个非连续的内存块,而数组是一块连续的内存,相对数组而言,链表插入和删除比较快,但是访问指定的内存块比较慢,效率不高。而且链表种类多,有单身链表、双向链表、环形链表以及非环形链表。实现这里主要实现下双向链表,首先定义链表所需要的结构:typedef struct _Node{ int data; struct _Node* prev; struct _Node* ...

2021-12-07 22:37:55 173

原创 环形队列

介绍环形队列是队列的一种特殊情况,也是基于队列的实现,队列是动态的集合,而环形队列则是固定长度的,当队列满时,则从队首删除元素。其原理基本和队列一致,都是实现先进先出的策略。实现先定义数据,并且初始化:static int* g_circularQueue = nullptr;static int g_maxLength = 0;static int g_length = 0;...

2021-12-07 22:37:52 216

c语言初学者教程之开始学习c

C 编程是一种通用的、过程的、命令式的计算机编程语言,于 1972 年由贝尔电话实验室的 Dennis M. Ritchie 开发,用于开发 UNIX 操作系统。 C是使用最广泛的计算机语言。 它随着 Java 编程语言的流行程度不断波动,Java 编程语言也同样流行,并且在现代软件程序员中使用最广泛。 C 编程语言是学生和在职专业人士成为优秀软件工程师的必备语言,尤其是在软件开发领域工作时。 我将列出学习 C 编程的一些主要优势: 1、易于学习 2、结构化语言 3、生成高效的程序 4、可以处理低级活动 5、可以在各种计算机平台上编译 本教程专为需要从头开始了解 C 编程语言的软件程序员而设计。 本 C 教程将使您对 C 编程语言有足够的了解,从那里您可以使自己达到更高的专业水平。 在继续本教程之前,您应该对计算机编程术语有基本的了解。 对任何编程语言的基本了解将帮助您理解 C 编程概念并在学习轨道上快速前进。

2021-12-20

2007 rational rose

rational rose 2007的激活文件。主要用于激活rational rose的2007版本。亲测有用。

2017-10-10

unix和windows文件格式互相转化

自动变更目录下的所有文件格式,比如把windows文件转化成unix格式,或者反之。

2017-04-27

空空如也

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

TA关注的人

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