自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 判断单链表中环的长度等问题

给定一个单链表,只给出头指针h:1、判断是否存在环选定两个指针p1,p2,初始时p1=p2=h,循环执行以下操作p1=p1+1,p2=p2+2,判断p1==p2,若p1==p2,记交点为p,则存在环,否则不存在。(追赶问题)2、求取环的长度从p开始执行以下操作p1=p1+1,p2=p2+2,再次相交时,执行的操作数,即为环的长度。(追赶问题)3、找出环的连接点p点到交点的距

2014-03-31 21:08:09 1661

原创 关于malloc函数

一、malloc能分配物理内存吗?malloc返回的地址只是逻辑地址空间的一个地址值。在使用该地址的时候才由操作系统映射到物理内存去访问内存数据。不存在malloc直接返回物理内存的说法。即使用VirtualAlloc分配的虚拟内存,提交以后还是照样要分配物理内存。知道使用的地址是逻辑空间地址,使用该地址的时候由操作系统做映射到物理内存的动作就可以了。二、malloc能够分配的最大

2014-03-31 16:36:07 1663

原创 C语言中浮点数的表示方法---浮点数表示引起的误差---IEEE 754关于浮点数的规定

一、表示方法在计算机中,浮点数一般由三部分组成:符号位+阶码+尾数。这种浮点数是用科学记数法来表示的,即:浮点数=符号位.尾数×2^阶码。根据IEEE 754国际标准,常用的浮点数有三种格式:(1) 单精度浮点数(32位),阶码8位,尾数24位(内含1位符号位)。(2) 双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。(3) 临时浮点数(80位),

2014-03-27 22:24:26 6418

原创 C++构造函数、拷贝构造函数、赋值函数、析构函数在函数调用中的使用过程

一、问题先上代码/* C++构造\析构\赋值\函数调用 by cjc 2014/3/27*/#includeusing namespace std;class B{public: B():data(0) { cout<<"default constructor"<<endl; } ~B() { cout<<"destructed by parame

2014-03-27 21:06:24 1250

原创 32操作系统各种数据类型的长度

32操作系统各种数据类型的长度,总是记不清,现记录如下以备查看。/* 32位操作系统各种数据类型的长度*/#include #include int main(void){ char a='c'; short b=100; int c=100; long d=100; float e=100.0; double f=100.0; long

2014-03-27 14:52:38 1098

原创 编程之美---计算字符串的相似度

题目:许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:        1. 修改一个字符(如把“a”替换为“b”)。        2. 增加一个字符(如把“abdd”变为“aebdd”)。        3. 删除一个字符(如把“travelling”变为“traveling”)。

2014-03-21 21:57:30 993

原创 无向图的构建及广度优先遍历---邻接表实现

无向图的构建及广度优先遍历---邻接表实现

2014-03-21 17:04:02 4191 1

原创 无向图的构建及深度优先遍历---邻接表实现

无向图的构建及深度遍历---临接表实现

2014-03-21 16:22:26 6248 1

原创 assert函数

ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE  (0),  程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。  ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。code

2014-03-21 09:33:53 700

原创 无向图的广度优先遍历---邻接矩阵实现

基本思想:1、从图中某个顶点V0出发,并访问此顶点;2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出发访问各自未被访问的邻接点;3、重复步骤2,直到全部顶点都被访问为止。图1中深度遍历的结果为:a->b->c->d->e->f->g->hcode/* 图的构建及其广度优先搜索*/#inclu

2014-03-20 22:26:03 5198

原创 无向图的构建及深度优先遍历---邻接矩阵实现

深度优先遍历(Depth-First Traversal)假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中

2014-03-20 21:31:35 5312

原创 冒泡排序

平均时间复杂度O(n^2),最坏时间复杂度是O(n^2),稳定的排序方法。/* 冒泡排序*/#include #include #define A 10int s[A]={1,23,4,45,6,87,9,38,27,5}; void bubblesort(int s[],int n){ int i,j; int temp; for(i=0;i<n;i++)

2014-03-20 13:58:53 520

原创 插入排序

从第二个数开始向前插入。复杂度O(n^2),稳定。code/* 插入排序*/#include #include #define A 11int s[A]={592,401,874,141,348,72,911,887,820,283,100};void insertsort(int s[],int n){ int i,j,temp; for(i=1;i<n;i

2014-03-19 20:11:53 549

原创 希尔排序

先取一个正整数(分组步长)d1算法思想:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中

2014-03-19 19:56:17 793

原创 归并排序

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。        归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。        将已有序的子序列合并,得到完全有序的序列;

2014-03-19 17:25:27 747

转载 递归程序与全排列问题

参考自http://blog.chinaunix.net/uid-20196318-id-31175.html递归的基本原理及特性:1. 每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行。2. 递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序.如打印语句位于递归调用语句前,它按照递归调用的顺序        被执行。

2014-03-18 11:52:11 925

原创 《编程之美》---精确表达浮点数子问题---辗转相除法求取最大公约数

辗转相除法当两个数都较大时,采用辗转相除法比较方便.其方法是:以小数除大数,如果能整除,那么小数就是所求的最大公约数。否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数。依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。例如:求4453和5767的最大公约数时,可作如下除法.5767÷4453=1余13144453÷1314=3余5111314

2014-03-17 15:14:22 1141

原创 编程之美---寻找最大的K个数

问题详见《编程之美》其基本思想是在达到目的的前提下,尽量地减少排序、选择的工作量解法二code/* 在一组数中寻找k个较大的数*/#include #include #define A 10int s[A]={10,2,34,4,5,-1,36,73,8,92};int k=4;void swap(int s[],int l,int m) //交换数据确立边界

2014-03-17 10:32:36 604

原创 交换排序法

基本思想:比较第 i 记录和第 j 个(j=i+1....n-1)记录,若不满足预设大小关系则交换时间复杂度O(n^2),是一种稳定的排序方法/* exchange sort*/#include #include #define A 10int s[10]={10,32,63,8,100,-10,63,49,76,17};void exchange_sort(int s

2014-03-16 21:32:30 588

原创 选择排序法

基本思想:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。时间复杂度O(n^2),不稳定。/* 选择排序法*/#include #include #define A 10int s[A]={34,23,3,27,92,37,82,10,-10,39};void selection_sort(int s[],int n){

2014-03-16 21:08:58 625

原创 堆排序

原理详见:海子博客虽然也学过数据结构,时间长了就有些忘了,本以为堆排序还要构建二叉树,但是实际上不是这样的。数据结构仅仅是为了数据处理方便而设计的,你也可以把一个静态链表看成其它可能的结构。下面是堆排序的code。堆排序是一种不稳定的排序方法,其平均时间复杂度为O(N*logN),最坏时间复杂度为O(N*logN)/* heap sort algorithm*/#includ

2014-03-16 20:43:51 471

原创 快速排序法

1、综述快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,快速排序的核心思想是---分治法。快速排序是对冒泡排序的一种改进,最坏的时间复杂度是O(n^2)。2、基本思想(1)先从数列中取出一个数作为基准数。(2)分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。(3)再对左右区间重复第二步,直到各区间只有一个数。虽

2014-03-13 22:01:23 709

原创 C++ deque(double-ended-queue)双端队列

ostream_iterator输出流迭代器模板的使用,选自MSDN#include //迭代器头文件#include //向量容器头文件#include using namespace std;int main(void){ // ostream_iterator for stream cout ostream_iterator intOut ( cout ,

2014-03-10 20:57:24 1034

原创 C++模板类简介

模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重

2014-03-10 19:36:35 795

原创 把二元查找树转变成排序的双向链表

二叉树转双向链表

2014-03-10 10:52:50 634

原创 二叉树叶子节点遍历---递归与非递归方法求取树深度

#include #include #define A 18//二叉树前序遍历序列,深度5,叶子节点int buffer[20]={10,6,4,-1,-1,8,-1,-1,14,12,3,-1,4,-1,-1,-1,16,-1,-1,-100};//二叉树结构体typedef struct binary_tree_node{ int data; struct binar

2014-03-09 21:56:32 3564

原创 递归构建二叉树---中序遍历二叉树(递归与非递归)

#include #include #define A 16//二叉树前序遍历序列------参考输入int buffer[16]={10,6,4,-1,-1,8,-1,-1,14,12,-1,-1,16,-1,-1,-100};//二叉树结构体typedef struct binary_tree_node{ int data; struct binary_tree_no

2014-03-09 16:01:22 662

原创 构建二叉树(据后序遍历序列)---后续遍历二叉树(递归与非递归)

#include #include #define A 4//二叉树后序遍历序列//-1表示空节点,-100表示遍历的开始标记int buffer[16]={-100,-1,-1,4,-1,-1,8,6,-1,-1,12,-1,-1,16,14,10};//二叉树结构体typedef struct binary_tree_node{ int data; struct b

2014-03-09 10:04:15 838

原创 二叉树中序遍历的非唯一性

说明:树中使用'#'表示空节点上面两棵树的中序遍历结果均为 #B#C#A#D#由此可见由含有使用‘#’表示空节点的中序遍历结果构建二叉树时,构建的结果不唯一

2014-03-08 10:33:05 1904

原创 构建二叉树(据前序遍历结果)--- 前序遍历二叉树(递归与非递归)

#include #include #define A 16//二叉树前序遍历序列int buffer[16]={10,6,4,-1,-1,8,-1,-1,14,12,-1,-1,16,-1,-1,-100};//二叉树结构体typedef struct binary_tree_node{ int data; struct binary_tree_node* ltree;

2014-03-07 17:17:28 702

原创 编程之美——饮料供货

题目:在微软亚洲研究院上班,大家早上来的第一件事是干啥呢?查看邮件?No,是去水房拿饮料:酸奶,豆浆,绿茶、王老吉、咖啡、可口可乐……(当然,还是有很多同事把拿饮料当做第二件事)。管理水房的阿姨们每天都会准备很多的饮料给大家,为了提高服务质量,她们会统计大家对每种饮料的满意度。一段时间后,阿姨们已经有了大批的数据。某天早上,当实习生小飞第一个冲进水房并一次拿了五瓶酸奶、四瓶王老吉、三瓶鲜橙

2014-03-06 21:46:26 1858

opensift源码+opensurf源码

rob hess使用c语言编写的sift程序,在windows下经过一定的修改就可以使用。open surf是比较流行的surf实现代码。 在此提供两者的下载

2015-04-02

状态压缩DP

包含状态压缩DP的原理及经典例子,感兴趣的同学可以下载

2014-04-01

汇编8位单片机64位~32位除法

8位单片机汇编64位对32位除法,采用竖式除法,还是比较简便的

2012-11-02

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

TA关注的人

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