- 博客(21)
- 资源 (5)
- 收藏
- 关注
原创 求子数组的最大和
#include using namespace std;//////////////////////////////////////////////////////////////////////////// 题目:输入一个整形数组,数组里有正数也有负数。// 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。// 求所有子数组的和的最大值。要求时间复杂度为O(n)。
2015-12-24 14:53:02
455
原创 将二叉树按中序遍历转换成双向链表
#include "BSTree.h"//将二叉树按中序遍历转换成双向链表(只调整指针的指向)templateBSTreeNode* BSTree2DoubleList(BSTreeNode* pRoot){ BSTreeNode* pNode = pRoot; BSTreeNode* pHeadNode = NULL; BSTreeNode* pPrevNode = NULL;
2015-12-24 12:41:43
1339
原创 二叉树基本操作递归和非递归方法
#ifndef _BSTREE_H_#define _BSTREE_H_#include #include #include using namespace std;//二叉树节点类型定义templateclass BSTreeNode{public: BSTreeNode(const T& data, BSTreeNode* pLeft = NULL, BSTreeNod
2015-12-24 11:50:03
602
转载 多线程、并发及线程的基础问题
1. Java 中能创建 volatile 数组吗?能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。
2015-12-16 15:40:11
5147
转载 从10G个数中找到中数
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。不妨假设10G个整数是64bit的。2G内存可以存放256M个64bit整数。我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。如果中数
2014-09-02 10:50:07
713
转载 统计论坛在线人数分布
求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。一天总共有 3600*24 = 86400秒。定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。然
2014-09-02 10:48:34
1383
原创 包含min函数的栈
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。#ifndef _CSTACK_WITH_MIN_#define _CSTACK_WITH_MIN_#define MAX_STACKSIZE 10template class CStackWithMin{public: CStackWithMin(
2013-04-12 10:51:26
576
转载 生产者消费者完整代码
#include #include #include using namespace std;#define SIZE_OF_BUFFER 10 //缓冲区长度unsigned short ProductID = 0; //产品号unsigned short ConsumeID = 0; //将被消耗的产品号unsigned short index_in = 0; /
2013-01-11 15:53:00
744
原创 获得时间服务器的时间
// SyncTimeTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include "DateTime.h"FILE* g_logfile = stdout;const char* szTimeServer[] = { "time-a.timefreq.bldrdoc.gov", "tim
2013-01-10 15:34:12
944
原创 一组关于日期计算的代码
DateTime.h#ifndef _DATE_TIME_H_#define _DATE_TIME_H_#ifdef __cplusplusextern "C" {#endif#define YES 1#define NO 0 typedef struct _DateTime{ unsigned short wSecond; /* The current se
2013-01-10 15:16:30
875
转载 简单的加密Crypt 类
(Crypt.h)#ifndef _CRYPT_H_#define _CRYPT_H_#include class CCrypt{public : static BOOL Encrypt (BYTE *source, BYTE *destination, DWORD length) ; static BOOL Decrypt (BYTE *source, BYTE *de
2012-12-13 11:01:42
875
转载 内存池实现
头文件 MemoryPool.h:#ifndef _MEMORY_POOL_H_#define _MEMORY_POOL_H_#ifndef NULL#define NULL 0#endiftypedef unsigned char Uint8;typedef unsigned short Uint16;typedef unsigned long Uint32;str
2012-12-11 14:48:35
728
1
转载 Linux C语言 内存越界问题总结
内存越界问题是项目开发中比较难解决的问题,下面就简单的描述下内存越界的种类、现象及引起的原因。 首先要明白进程地址空间的分配如下图: 如果进程是多线程的,则每个线程都会在用户的栈区开辟一个自己的栈。 了解的上述分布图,知道每个变量、每块内存在系统中的布局,很容易区分一个 地址是否为有效地址,一个变量或者内存的数据被破坏了可以大致判断出是那个变量或者内存使用越界了。
2012-12-10 17:55:46
5752
转载 内存越界的概念和调试方法
调试了两天,搞定了项目里一个内存越界的bug,于是记录一下,备查。所谓内存越界(Heap Corruption),就是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常。越界访问是非常常见的一种黑客手段。内存越界通常有如下的表现:1 程序出现异常 异常的现象有很多,如:代码突然跑到不相干的地方去执行,访问异常,正常的变量操作也报错…
2012-12-10 15:36:14
2676
转载 如何用栈实现递归与非递归的转换
一.为什么要学习递归与非递归的转换的实现方法? 1)并不是每一门语言都支持递归的. 2)有助于理解递归的本质. 3)有助于理解栈,树等数据结构.二.递归与非递归转换的原理. 递归与非递归的转换基于以下的原理:所有的递归程序都可以用树结构表示出来.需要说明的是,这个"原理"并没有经过严格的数学证明,只是我的一个猜想,不过在至少在我遇到的例子中是适用的.
2012-12-07 19:27:59
995
转载 这个只有两行的C程序至少有80%的人会判断错,不信的就进来!
char *ptr = "csdn"; printf( "%c\n",*(ptr++)); int i = 10; i << 1; i>>5; printf( "%d\n", i);
2012-12-07 19:22:16
579
转载 arm堆栈的增长方式
堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending Sta
2012-12-07 19:18:30
1254
转载 获得堆栈增长方向的一种方法
在阅读wget源代码的过程中,发现一个用C语言实现,获得堆栈增长方向的巧妙方法 wget版本为1.11.4 函数位置: $ pwd/home/c-aries/source/wget-1.11.4/src$ grep -n "^find_stack_direction" alloca.c 119:find_stack_direction ()$实现代码
2012-12-07 17:39:19
629
转载 堆与栈
堆(heap)和栈(stack)有什么区别?? 简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放
2012-12-07 17:21:19
466
转载 如何判断栈的增长方向?
对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C去解决这个问题
2012-12-07 17:18:27
514
hdtunepro_v4.60H
2013-01-11
Windows CE Remote Process Explorer
2012-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人