自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mmdnxh的博客

看的书太少而想得太多。

  • 博客(54)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 二叉搜索树(BST)

什么是二叉搜索树        一颗二叉搜索树是以一颗二叉树来组织的,这样的一棵树可以用一个链表数据结构来表示,其中每一个结点就是一个对象。除了key和卫星数据之外,每个结点还包括属性left,right和p。它们分别指向结点的左孩子、右孩子和双亲。如果某个孩子结点和父节点不存在,则相应属性的值为NIL。其中卫星数据是指:在实际中,待排序的数很少是单独的数值,每个记录包含一个关键字(key),

2017-11-16 11:33:58 633

转载 数据库索引的原理到底是什么?

引言        中小企业MIS系统的管理基本上由两大部份组成,一是前台的可视化操作,二是后台的数据库管理。网管对前台的管理和维护工作包括保障网络链路通畅、处理MIS终端的突发事件以及对操作员的管理、培训等,这是网管们日常做得最多、最辛苦的功课;然而MIS系统架构中同等重要的针对数据库的管理、维护和优化工作,现实中似乎并没有得到网管朋友的足够重视,看起来这都是程序员的事,事实上,一个网管如果

2017-11-12 12:06:13 25718 1

原创 有序表查找

有序表的定义        有序表:对于以数组方式存储的数据,如果已经按其关键字值的大小顺序排列好,则称为有序数组或有序表。因此,使用有序表查找的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储。折半查找        折半查找(Binary Search):又称二分查找。 折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与

2017-11-09 12:35:59 9930

原创 顺序表查找

查找的定义        查找(searching)就是根据给定的某一个值,在查找表中确定一个关键字等于给定值的数据元素(或记录)。查找表(Search Table)是由同一类型的数据元素(记录)构成的集合。,关键字(Key)是数据元素中某一个数据项的值,称为键值,用来标识一个数据元素。若表中不存在关键字等于给定值的记录,则查找不成功,此时查找的结果可给出一个“空”记录或“空”指针。

2017-11-09 10:33:11 11115

原创 《TCP/IP详解卷一:协议》数据链路层(二)

SLIP:串行线路IP        SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式。SLIP适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。 SLIP协议描述的帧格式如下:IP数据报以一个称作END(0xC0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,

2017-10-12 22:17:18 2229

原创 《TCP/IP详解卷一:协议》数据链路层(一)

数据链路层

2017-10-10 22:15:02 5711

原创 设计一个有 getMin功能的栈

该题目来自《程序员代码面试指南》,在理解其实现原理的基础上,将Java实现改用C++实现。题目        实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求pop、push、getMin操作的时间复杂度都是O(1) 。设计的栈类型可以使用现成的栈结构 。难度        *解答        在设计上我们使用两个栈

2017-10-10 20:29:41 304

原创 《TCP/IP详解卷一:协议》 概述

TCP/IP协议族,Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP协议族允许不同型号、

2017-10-09 17:56:44 3110 1

转载 线性时间排序:计数排序、基数排序、桶排序

对于内排序算法,从最初的时间复杂度O(n*n)改进到O(nlogn)。常见的归并排序和堆排序达到了最坏情况的上界,快速排序在平均情况下达到上界。(时间复杂度为O(nlogn))。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较,因此这类算法被称为比较排序。对于排序算法我们可知,在最坏情况下,任何比较排序算法都需要做O(nlgn)次比较。在算法导论第八章中的证明中给出了

2017-10-01 22:00:22 1137

原创 快速排序

快速排序的基本思想:通过一趟排序将待排记录分割为独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分继续进行排序,以达到整个序列有序的目的。快速排序与归并排序一样,也使用了分治思想。 下面对一个典型的子数组A[p..r]进行快速排序的三步分治过程。分解:数组A[p..r]被划分为两个 (可能为空) 子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]

2017-09-30 14:37:29 356

原创 归并排序

当一个算法在结构上是递归的:即算法一次或多次调用自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归的求解这些子问题,然后在合并这些子问题的解来建立原问题的解。分治法在每层递归上都有三个步骤:分解原来问题为若干子问题,然后,这些子问题是原问题的规模较小的实例。解决这些子问题,递归地求解各个子问题, 然而,若子问题规模足够小时,则直

2017-09-29 19:21:54 270

原创 堆排序

由于堆也被引申为Java中的垃圾收集存储机制,在本文中使用堆的定义仅为堆数据结构。完全二叉树的定义为:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。堆是一个数组,也可以被看作一个近似的完全二叉树。对堆可以分为两类:大顶堆:每个结点的值都大于或等于其左右孩子的值小顶堆:每个结点的值都大于或等于其左右孩子的值 左边的即为大顶堆,右边的即为小顶堆,堆也可用作

2017-09-28 19:33:57 265

原创 希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。同时也突破了之前内排序算法复杂度为O(n2)的限制。 希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由

2017-09-28 17:12:30 231

原创 直接插入排序

直接插入排序的思想是:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入并排序,直至整个序列有序为止。算法中引进的附加记录R[0]称监视哨或哨兵(Sentinel)。 哨兵有两个作用: ① 进人查找(插入位置)循环之前,它保存了R[i]的副本,使不致于因记录后移而丢失R[i]的内容; ② 它的主要

2017-09-28 15:55:56 287

原创 冒泡排序

冒泡排序是一种交换排序,它的关键思想是:两两相邻元素的比较。如果反序则交换,直到没有反序的元素。最差时间复杂度 O(n^2)最优时间复杂度 O(n)平均时间复杂度 O(n^2)最差空间复杂度 O(n),辅助空间 O(1)void swap(int& x,int& y){ if(x == y) return ; x ^= y; y ^= x;

2017-09-28 15:09:44 277

转载 C/C++中交换两个整型数值的方法

实现交换两个整数的方式有很多,下面将简单介绍一些目前我学习到的方法,欢迎大家补充指正。//C语言中学到的最简单直接的方式void swap(int* a,int* b){ int temp = *a; *a = *b; *b = temp;}//由于C++中存在引用机制,可以直接修改传入参数的值void swap(int& a,int& b){ int te

2017-09-28 13:50:38 4208

转载 数字信封原理

数字信封是一种综合利用了对称加密技术和非对称加密技术两者的优点进行信息安全传输的一种技术。数字信封既发挥了对称加密算法速度快、安全性好的优点,又发挥了非对称加密算法密钥管理方便的优点。数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。数字信封包含被加密的内容和被加密的用于加密该内容的密钥。 在数字信封中,信息发送方采用对称密钥来加密信息内容,然

2017-09-23 17:22:15 5754

转载 数字签名过程及数字证书

数字签名是什么? 作者:David Youd 翻译:阮一峰 原文网址:http://www.youdzone.com/signature.html 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。 3. 苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4. 鲍勃收信后

2017-09-23 13:02:46 18267 3

转载 C/C++中如何获取数组的长度?

C、C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) { len = (sizeof(a

2017-09-22 13:41:29 498

转载 为什么普通用户没有/etc/passwd的写权限,可以修改用户密码

Unix 的口令文件 /etc/passwd 记录着所有用户和对应的登录密码等信息。/etc/passwd文件的所有者是root而且只有root用户有权限对该文件进行写操作。但是Unix系统其实是允许所有的用户修改自己的登录口令的(即修改/etc/passwd或/etc/shadow 文件)其实现原理如下。首先要说明的是,与每个进程相关联的ID有6个或更多,如图1所示 其中进程的有效用户ID以

2017-09-22 13:14:53 11201 1

原创 C.Primer.Plus(第六版)第17章 编程练习

//17_1//main.cpp#include <iostream>using namespace std;char temp;int count = 0;int main(){ cout<<"please enter some character:"; cin>>temp; while(temp != '$') { count++;

2017-09-06 15:36:33 619

原创 C.Primer.Plus(第六版)第16章 编程练习

C.Primer.Plus(第六版)第16章 编程练习

2017-08-11 14:36:16 421

原创 NYOJ_6 喷水装置(1)

喷水装置(一)时间限制:3000 ms  |  内存限制:65535 KB难度:3描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。

2017-07-31 16:16:38 279

原创 C.Primer.Plus(第六版)第15章 编程练习

//sales.h //15.4#ifndef SALES__H__#define SALES__H__#include #include class Sales{public: enum{MONTHS = 12}; class bad_index : public std::logic_error { private: int bi; public: ex

2017-07-31 14:43:42 703

转载 SICP习题集

http://sicp.liujiacai.net/chap1/exercise.html http://sicp.readthedocs.io/en/latest/

2017-07-26 18:18:34 454

原创 C.Primer.Plus(第六版)第14章 编程练习

//14_1#ifndef WINEC__H__#define WINEC__H__#include <iostream>#include <string>#include <valarray>#include <utility>class Wine{private: std::string name; std::pair<std::valarray<int>,std::

2017-07-26 09:04:09 698

原创 递归过程和递归计算过程

递归过程:表示这个过程的定义引用了该过程本身。如下面的代码块1(define (factorial n) (fact-iter 1 1 n))(define (fact-iter product count max-count) (if(> count max-count) product (fact-iter (* product count)// (

2017-07-25 11:56:46 2135 2

原创 C.Primer.Plus(第六版)第13章 编程练习

//13.1//cd.h --- base class#ifndef CD__H__#define CD__H__class Cd{private: char performers[50];//演员 char label[20];//标签 int selections; double playtime;public: Cd(char* s1,cha

2017-07-20 21:06:05 422

原创 C.Primer.Plus(第六版)第12章 编程练习

//12.1// cow.h#ifndef COW__H__#define COW__H__class Cow{private: static const int N = 20; char name[N]; char *hobby; double weight;public: Cow(); Cow(const char* nm,const

2017-07-17 17:26:47 457

原创 C.Primer.Plus(第六版)第12章 队列模拟

//queue.h#ifndef QUEUE__H__#define QUEUE__H__//This quene will contain Customer itemsclass Customer{private: long arrive;// arrival time for customer int processtime;//processing time for

2017-07-16 14:36:29 418

原创 正则序和应用序

最近学习SICP一书中,1.1.5节提到了应用序和正则序。对一个组合式进行求解,解释器对其进行执行求值运算的方式并不是唯一。其中分为两种两种求值模型:正则序求值,以及应用序求值。 正则序:完全展开而后归约。这种求值模型是先不求出运算对象的值,直到实际需要它们的值时再去做。首先用运算对象表达式去替换形式参数,直到得到一个只包含基本运算符的表达式,然后在去执行求值。应用序:先求值参数而后应用。解释器

2017-07-15 23:22:59 2076

转载 运行MIT-GNU Scheme出现“Requested allocation is too large”

请求分配额度太大。尝试分配更小的堆内存。 右键单击应用程序的链接并选择属性。编辑目标,在其中添加自定义参数 –heap 512即可 参考链接:stackoverflow

2017-07-15 18:35:56 1488

转载 表达式的前缀后缀问题

一个中缀式到其他式子的转换方法~~ 这里我给出一个中缀表达式~ a+b*c-(d+e) 第一步:按照运算符的优先级对所有的运算单位加括号~ 式子变成拉:((a+(b*c))-(d+e)) 第二步:转换前缀与后缀表达式 前缀:把运算符号移动到对应的括号前面 则变成拉:-( +(a *(bc)) +(de)) 把括号去掉:-+a*b

2017-07-15 16:40:24 511

原创 线性顺序链表简单实现

#include<iostream>using namespace std;//#define MaxSize 20;const int MaxSize = 20;typedef int ElemType;typedef int Status;//typedef int ATTR[10];const int OK =1;const int ERROR =0;const int T

2017-07-14 17:45:48 320

原创 C.Primer.Plus(第六版)第11章 编程练习

//11.1//vector.h -- Vector class with << mode state#ifndef VECTOR__H__#define VECTOR__H__#include <iostream>namespace VECTOR{ class Vector { public: enum Mode{RECT,POL};

2017-07-12 16:08:15 320

原创 C.Primer.Plus(第六版)第10章 编程练习

// 10.1// bank.h#ifndef BANK__H__#define BANK__H__class Bank{private: enum{SIZE = 20 }; char bank_name[SIZE]; char account[SIZE]; double deposit;public: Bank(); Bank(const

2017-07-10 08:53:11 403

原创 C.Primer.Plus(第六版)第九章 编程练习

//9.1 //golf.h#ifndef __GOLF__H__#define __GOLF__H__const int Len = 40;struct golf{ char fullname[Len]; int handicap;};void setgolf(golf& g,const char* name,int hc);//return 1 if name is

2017-07-06 19:00:09 259

原创 升序输出

#include<iostream>#include <algorithm>using namespace std;int main(){ int testNum,rowNum=3; cin>>testNum; cin.get(); for(int i=0;i<testNum;i++) { char str[3]={0};

2017-07-02 22:41:28 497

转载 常见的字符串复制函数

1.strcpy()函数 原型声明:char strcpy(char dest, const char *src);功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 2.strcpy_s() _s函数是微软自己加的, 不是标准库, 最直观

2017-07-02 17:03:24 14338

原创 括号配对问题

#include<iostream>#include<vector>#include<string>using namespace std;int main(){ int n; cin>>n; while(n--) { vector<char> vec; string ch; vec.push_back(

2017-07-01 23:04:47 210

opencv 2.4.11 的所有依赖文件(.dll)

opencv 2.4.11 的依赖文件(.dll),OpenCV(开源计算机视觉库)是在BSD许可下发布的,因此它在学术和商业上都是免费的。它具有C ++,Python和Java接口,并支持Windows,Linux,Mac OS,iOS和Android。OpenCV旨在提高计算效率并强调实时应用程序。

2018-05-05

嵌入式实训代码

嵌入式实训的项目代码

2017-06-15

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

TA关注的人

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