- 博客(40)
- 资源 (6)
- 收藏
- 关注
转载 编写Makefile
如何自己编写Makefile 相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成
2015-10-16 16:32:30
536
转载 网络编程 select模型
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 多端口复用函数select在调用前
2015-09-27 21:58:30
540
原创 链表的逆置 递归实现
node* reverse( node* pNode, node*& head) { if ( (pNode == 0) || (pNode->next == 0) ) // 递归跳出条件 { head = pNode; // 将链表切断,否则会形成回环 return pNode; }node* temp = re
2015-09-18 19:55:44
676
原创 编程珠玑 第十五章 散列表应用 hash字符串
#define HASH 29989#define MULT 31struct hashNode{ char* strWord; int nCount; hashNode* pNext; hashNode() { strWord = 0; nCount = 0; pNext = 0; }};typedef hashNode* hashNodePtr;/
2015-09-01 20:48:35
721
原创 为关联容器编写插入迭代器
//编写一个关联容器的插入迭代器template class asso_inserter_iterator:public std::iterator {public: explicit asso_inserter_iterator(container& c) { pContainer = &c; } asso_inserter_iterator& operator=(cons
2015-08-31 15:22:22
872
原创 运用map,string并于执行期指定排序准则
class RuntimeStringCmp{public: enum cmp_mode { normal, nocase, }; RuntimeStringCmp(cmp_mode mod=normal):mode(mod) { } ~RuntimeStringCmp() { } static bool nocase_compare(char char1
2015-08-28 18:46:54
923
原创 在一个字符串中找到第一个只出现一次的字符
//如输入 abaccdeff,则输出 b void PrintFirstOneAppearOnce(char* strString){ int nTime[26]; memset(nTime, 0, sizeof(nTime)); for (int i = 0; i < strlen(strString); i++) { int nNumber = strString[i]
2015-08-27 18:11:54
647
原创 求镜像的二叉树
//主要思路:遍历二叉树,然后交换左右子树void ChangeToMirror(BTreeNode* pRoot){ if (pRoot == NULL) { return; } BTreeNode* pTempNode = pRoot->pLeft; pRoot->pLeft = pRoot->pRight; pRoot->pRight = pTempNode;
2015-08-27 16:43:49
620
原创 输入一个单向链表,输出该链表中倒数第 k 个结点
ListNode* CreaList(){ int nValue; ListNode* Head = NULL; ListNode* ListIndex = NULL; while(cin >> nValue) { if (Head == NULL) { Head = new ListNode(); Head->nValue = nValue; ListInd
2015-08-27 15:33:57
2419
原创 关于二叉树,建立、遍历、求节点最大距离
今天做了一题求二叉树节点的最大距离,顺便写了下二叉树的建立,遍历的过程。 我觉得这题的主要思想是深度遍历+动态规划,我们在深度遍历的过程中,对于某一个子树,求出左右子树叶子节点到根节点的最大距离,进而求出经过根节点的最大距离。 最后求出所有子树经过根节点的最大距离。就是这个题目的最终结果。代码如下: //二叉树的建立,以及遍历//16 14 8 2 -1 -1 4 -1 -1 7 1 -
2015-08-27 12:05:31
762
原创 判断整数序列是否是二叉查找树的后序遍历
这是一道面试题,解题的代码如下(我这里把有重复节点的序列排除了,这里的二叉树不允许有相同值得节点):bool JudgeListIsBSTreePostOrder(int* iArray, int nLeft, int nRight){ if (nLeft == nRight) { return true; } int nMidValue = iArray[nRight]; i
2015-08-26 22:45:46
836
原创 关于虚函数
typedef void (*fun)();class A{public: A() { cout << "class A default constructor called" << endl; a = 0; } A(int param) { cout << "class A constructor called" << endl; a = param; } ~
2015-08-25 23:24:48
586
原创 C++成员初始化列表
class A{public: A() { cout << "class A default constructor called" << endl; a = 0; } A(int param) { cout << "class A constructor called" << endl; a = param; } ~A() { } virtual v
2015-08-25 15:17:06
820
转载 揭开私有继承的面纱
原文:http://blog.youkuaiyun.com/tonywearme/article/details/7039963什么是私有继承?以前在学校学习的时候,冥冥乎知道有这样一个东西,却没有仔细研究过。后来工作中用到Boost库才开始了解它。如果说保护继承大多是为了语言完整性的话,私有继承还是有一些用途的。私有继承 vs 公有继承公有继承继承的是接口与实现,它表示了类与类之
2015-08-22 16:10:41
532
转载 C++中 explicit的用法
explicit 是避免构造函数的参数自动转换为类对象的标识符[cpp] view plaincopy#include using namespace std; class A { public: explicit A(int a) { cout"创建类成功了!"
2015-08-22 11:46:04
434
原创 最小优先队列 解决TopK问题
#include #include #include #include using namespace std;//////// 优先队列#define MAX_HEAP 300class PriorityHeap{public: PriorityHeap(); ~PriorityHeap(); bool empty(); int size(); i
2015-08-21 21:46:35
942
转载 C++类模板的三种特化
C++类模板的三种特化By SmartPtr(http://www.cppblog.com/SmartPtr/) 说起C++的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。 这里用一个简单的例子来说明
2015-08-21 15:46:20
533
原创 二叉排序树转化为排序的双向链表
#include #include #include using namespace std;/******************** 题目1 *************************二元查找树转化为排序的双向列表输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 */struct BSTreeNod
2015-08-18 21:29:30
699
原创 堆排序 - 不稳定的排序
#include #include #include using namespace std;void HeapAdjust(int* pHeap, int i, int length){ int child; for (; 2*i + 1 < length; i = child) { child = i*2 + 1; int rightC
2015-08-18 20:29:28
2208
转载 Linux GCC常用命令
1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C
2015-08-12 23:25:34
404
转载 gcc-c-o命令
gcc -c a.c 编译成目标文件a.ogcc -o a a.o 生成执行文件a.exegcc a.c 生成执行文件a.exegcc -o a -c a.c 编译成目标文件agcc -o a a.c 生成执行文件a.exe在a.c中引用test.c中的一个函数后: gcc -c test.c 编译成目标文件test.o gcc -c a.c 编
2015-08-12 23:05:13
3602
转载 Linux常见命令
对 Linux 新手非常有用的 20 个命令你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了。从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳。我担心该记住多少命令,来帮助我完成所有任务。毫无疑问,在线文档,书籍,man pages以及社区帮了我一个大忙,但是我还是坚信有那么一篇文章记录了
2015-08-09 22:37:32
778
原创 客户端宕机致命问题
1、不要依赖外部数据,如果要用外部数据,要有足够的校验,并注意外部数据的完整性和正确性2、主线程不要有网络、IO同步操作,大量耗时操作要用异步3、IP获取,直接从登陆服应该可以取到4、客户端的稳定性也要有足够的重视5、sprintf_s 是不安全的,慎用建议用下面的APIRKT_API char* sstrcpyn(char* dest, const char* src,
2015-06-01 11:28:51
686
原创 如何检查内存泄露问题[转载]
如何检查内存泄露问题[转载] 简单说明了一下没有工具的情况如何运用VC库中的工具来检查代码的内存泄漏问题。一: 内存泄漏 内存泄漏是编程中常常见到的一个问题,内存泄漏往往会一种奇怪的方式来表现出来,基本上每个程序都表现出不同的方式。 但是一般最后的结果只有两个,一个是程序当掉,一个是系统内存不足。 还有一种就是比较介于中间的结果程序不会当,但是系
2012-10-29 14:59:59
1087
原创 strcpy, strcmp, strlen, memcpy 实现
#include #include #include #include char *StrCpy(char *dest, const char *src){ assert((dest != NULL) && (src != NULL)); char *str = dest; while ((*dest ++ = *src ++) != '\0');
2012-10-25 10:03:04
758
原创 数据结构 第六章--线索二叉树
线索二叉树是一种不用设栈就可以遍历的二叉树, 如果在某个程序中所用的二叉树需经常遍历或者查找结点在遍历所得到线性序列中的前驱和后继,则应采用线索链表作存储结构。 怎么样才能在遍历的时候不需要设栈呢? 这就需要利用二叉链表中的空链域。若结点有左子树,则其lchild域指示其左孩子,否则令lchild域指示其前驱; 若结点有右子树,则其rchild域指示其右孩子,否则rchild域指示其后继。
2012-05-01 16:31:48
793
原创 数据结构--第六章 遍历二叉树
1.二叉树的先序遍历:若二叉树为空,则空操作;否则(1)访问根节点;(2)先序遍历左子树;(3)先序遍历右子树;2.二叉树的中序遍历:若二叉树为空,则空操作;否则(1)中序遍历左子树;(2)访问根节点;(3)中序遍历右子树;3.二叉树的后序遍历:若二叉树为空,则空操作;否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根节点;
2012-04-29 15:00:00
1212
1
原创 数据结构 第三章-- 循环队列(队列的顺序表示和实现)
为充分利用向量空间,克服“假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。 循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是空还是满。 解决这个问题的方法至少有两种:
2012-04-26 21:40:38
1848
原创 数据结构 第三章-- 链队列
队列:是一种先进先出(FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。队尾:允许插入的一端。队头:允许删除的一端。 和线性表类似,队列也可以有两种存储表示。 用链表表示的队列简称链队列,一个链队列显然需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。这里,和线性表的单链表一样,为了操作方便起见,我们
2012-04-26 20:40:19
958
原创 公有,私有,和受保护的继承
每个类型它所定义的成员的访问。派生类可以近一步限制但不能放松对所继承的成员的访问 基类本身指定对自身成员的最小访问。如果成员在基类中为private,则只有基类和基类的友元可以访问该成员。派生类不能访问基类的private成员,也不能使自己的用户能够访问那些成员。 如果基类成员为public或protected,则派生列表中使用的访问标号决定该成员在派生类中的访问级别:
2012-04-23 19:06:05
706
原创 数据结构 栈的应用 -- 迷宫的实现
//node_maze.h#ifndef NODE_MAZE_H#define NODE_MAZE_Hstruct Point{ int x; int y;};struct node{ int ord; Point pt; int di;};#endif//main.cpp#include "Stack.h"#include "node_maze.h"#inc
2012-04-19 20:46:43
589
原创 数据结构 栈的应用-- 表达式求值
//EvaluateExpression.h#include "Stack.h" //见上一篇博文#define OP_NUM 7Status in(char ch, char * arr);double EvaluateExpression();void Push_OPDN(SqStack &S1, SqStack &S2);//EvaluateExpression.cp
2012-04-19 20:34:39
2957
原创 数据结构 --栈的实现
#ifndef STACK_H#define STACK_H#include "stdlib.h"#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define OVERFLOW -2#define Status bool#define TRUE 1#define FALSE 0#defi
2012-04-19 20:22:55
442
转载 extern "C"的含义
C与C++程序连接问题 它们之间的连接问题主要是因为c c++编绎器对函数名译码的方式不能所引起的,考虑下面两个函数 /* c*/ int strlen(char* string) { ... } //c++ int strlen(char* string) { ... } 两个函数完全一样。在c在函数是通过函数名来识别的,而在C++中,由于
2012-01-03 16:32:29
570
原创 strcpy函数
char *Strcpy(char *strDest, const char *strSrc){ assert((strDest != NULL) && (strSrc != NULL)); char *addr = strDest; while((*strDest ++ = *strSrc ++) != '\0'); return addr;}
2011-12-20 18:59:42
455
原创 最大子数组和
/*求子数组的最大和题目输入一个整型数组,数组里有正数也有负数。数组中连续的一个或者多个数组组成一个子数组,每个子数组都要一个和。求所有子数组的和的最大值。要求时间复杂度为O(n). */#include using namespace std;#define N 100int n;int value[N];int MaxSum(in
2011-12-20 10:34:48
496
原创 二元查找树-- 在二元树中找到和为某一值的所有路径
//在二元树中找到和为某一值的所有路径//从树的根节点开始往下访问一直到叶节点所经过的所有结点形成的一条路径。//打印出荷与输入整数相等的所有路径 #include #include using namespace std;typedef int value_type;class BinaryNode{public: BinaryNod
2011-12-18 13:30:21
511
原创 二元查找树-- 转化为双向链表
/*把二叉查找树转化为双向链表 什么是二元查找树? 二元查找树: 它首先要是一棵二元树,在这基础上它或者是一棵空树;或者是具有下列性质的二元树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二元查找树*/#include u
2011-12-18 13:23:25
705
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅