- 博客(23)
- 资源 (4)
- 收藏
- 关注
原创 linux下安装oracle-client 和 DBD::Oracle和DBD::Pg
到http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html下载四个文件:oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpmoracle-instantclient11.2-odbc-11.2.0.3.0-1.x86_64.rpmoracle-inst
2015-04-02 18:03:06 3012
原创 linux下perl cpan安装模块
1. 安装perl-CPAN: yum install perl-CPAN2. $sudo perl -MCPAN -e shell3. cpan>install DBI2、3步也可以简化成一步:$sudo perl -MCPAN -e 'install DBI'
2015-04-02 17:39:36 4060
原创 将二叉排序树转化成双链表
跟中序遍历原理一样,只要修改访问操作即可,下面提供递归与非递归方法:bool bt2list(Tree *root, Tree ** head, Tree **tail, bool *sethead) { if (root == NULL) return false; if (root->left != NULL) tr2list(root->left, head, tail,
2013-09-19 21:50:20 747
原创 二叉树的非递归遍历
二叉树的非递归遍历需要用到栈,三种遍历方法中最麻烦的是后序遍历,因为它需要访问根结点2次,故在第一次访问的时候需要标示它的访问状态。#include #include using namespace std;typedef struct _Tree{ int data; struct _Tree *left; struct _Tree *right;} Tree;ty
2013-09-19 14:16:05 604
原创 蛇形矩阵的输出
蛇形矩阵如下所示:要求输出任意大小的蛇形矩阵。void snakemetrix(int n) { int a[n][n]; int k = 1; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { if (i % 2 != 0) { a[i - j][j] = k++; } el
2013-09-17 13:39:22 1281
原创 2014阿里巴巴笔试题
现在没有完全整理好,下面是附加题:题目:两棵二叉树T1和T2,T1的节点数是百万量级,T2的节点数一千以内,请给出判断T2是否T1子树的可行算法。分析:首先想到的是递归,但是T1的数量级太大,递归会导致栈溢出,于是以非递归实现。bool IsSubtree(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2) { if (pRoot1 =
2013-09-14 23:15:19 2641 3
转载 sigsuspend的用法
---------------------------------------------------------------------------#include #include #include void my_op(int);main(){ sigset_t new_mask; struct sigaction act;
2013-09-11 15:09:47 780
转载 MySQL的information_schema的介绍
大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。information_schema数据库是MySQL自带的,它提供了访问
2013-08-28 19:49:44 556
原创 从n个数中选择m个数,使其和为s
题目:从n个数中任选m(小于n)个数,使其和为s//判断数组b对应的数组a中的元素之和是否为sbool isSum(int a[], int b[], int n, int s) { int ret = 0; for (int i = 0; i < n; i++) { ret += a[b[i]]; } return s == ret;}//a:初始数组//n:a包含的元
2013-08-27 16:24:53 4871 1
原创 关键词 volatile 的理解
volatile的字面意思是:不稳定的,易变的。它的主要作用是向编译器说明该变量是易变的,防止编译器做如取缓存值等有关的优化,保证取的值永远是最新的。const 与 volatile意思相反,它们可以一起使用,并且将它们一起使用还可以看出const 变量为伪“常量”的本质。如:const int a = 3;int *ptr = const_cast(&a);*ptr = 4;
2013-08-21 15:02:11 573
转载 GDB的调试技巧
1: 对于在应用程序中加入参数进行调试的方法: 直接用 gdb app -p1 -p2 这样进行调试是不行的。 需要像以下这样使用: #gdb app (gdb) r -p1 -p2 或者在运行run命令前使用set args命令: (gdb) set args p1 p2 可以用show args 命令来查看2. 加入
2013-08-04 23:25:06 527
转载 求整数的二进制表达中有多少个1
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的
2013-08-04 01:40:04 774
原创 循环左移字符串
题目:循环左移字符串,如:输入1234567,循环左移 3 位得到4567123。思路:设字符串AB,A的倒序为A*,B的倒序为B*,则 (A*B*)* = BA(跟矩阵的转秩一样)。代码如下:#include #include //将s从start到end间的字符串倒序void _reverse(char *s, int start, int end) { int
2013-08-04 00:19:31 735
原创 求从1,2...n中取任意个不重复的数和为m的所有组合
编程求解:输入两个整数 m 和 n ,从 1 , 2 , 3.......n 中随意取几个数(不重复) ,使其和等于 m , 要求将其中所有的可能组合列出来。下面是在网上看到的方法:分治,即 m = idx + m - idx,从最大数字n开始查找,然后逐渐后退,但每次查找只会在比当前数字大的方向进行组合尝试,这样可以保证找到的组合不会重复。 #include #includ
2013-08-03 21:57:03 1429
原创 不用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)求1+2+…+n
题目:不用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)求1+2+…+n。在网上看到2种解法,解法1:利用类的静态变量,每创建一个类对象,将静态变量增加一定的值,然后创建一个n大的对象数组,打印出该静态变量。解法2:利用&&的短路性质(其实是变相的 if 表达式),然后进行递归。int sum(int n) { int t
2013-08-03 16:41:05 1257
原创 翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格隔开,为简单起见,标点符号和普通字母一样处理。例如:输入"I am a student.",则输出:"student. a am I"。#include #include #include char *reverse_sentense(char *s) { int n = 0; int l
2013-08-03 15:44:11 617
原创 判断整数序列是否为二叉查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果,因此返回true。 8 / \ 6 10 / \ / \ 5 7 9 11 如果输入7、4、6、5,没有
2013-08-03 13:21:27 692
转载 判断单链表是否有环
转自:http://eriol.iteye.com/blog/1184348题目 :给出两个链表的头指针,比如h1,h2,判断这两个链表是否相交。扩展:(1) 如果链表可能有环呢?(2) 如何求出两个相交链表的相交的第一个节点。如果链表没有环假设两个链表没有环,如果它们相交,那么它们的最后一个元素必定相同。JAVA代码为:public boolean isC
2013-08-02 23:01:17 625
原创 查找n个数中最小的k个元素
/* 求n个数中最小的k个元素 * 用堆排序:时间复杂度为O(nlgk) */#include /* 求左右叶子、父结点的宏定义 */#define LEFT(i) ((i) * 2)#define RIGHT(i) ((i) * 2 + 1)#define PARENT(i) ((i) / 2)/* 维持堆的性质 * 算法原理:选取当前结点及其子结点3个中的最大值,
2013-08-02 20:52:48 1063
原创 线性时间查找第k大元素
/* 找出第k大的元素可以使用:堆排序,桶排序等方法,这里介绍一种O(n)的分治算法:先对数组划分,然后判断第k小的元素应该在哪个分组,再对相应的分组递归 */int partion(int *a, int start, int end) { int rnd = start + rand() % (end - start + 1); int tmp = a[rnd]; a[rnd] = a
2013-08-02 19:42:16 1321
原创 在二叉排序树中查找和为给定值的路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如:输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7则打印出两条路径:10, 12 和10, 5, 7。思路:1、当访问到某一节点时,把该结
2013-08-02 14:19:32 1158
原创 Linux工具收藏
使用Linux,需要非常多的工具来辅助。为了防止在需要的时候忘记,在此记录下:一、KDE开发环境1. KDevelop2. Eclipse3. codeblocks4. kscopre:类似sourceinsight的代码查看工具。二、
2013-07-10 11:46:42 473
转载 APUE源码安装与使用
环境:确保你已经安装了gcc和gawk。 步骤 1.到www.apuebook.com下载源码 2.tar解包,cd apue.2e 3.vi Make.defines.linux 修改变量WKDIR,指向你的apue源码的位置,我的是/home/readyou/code/apue.2e,所以 WKDIR=/home/r
2013-07-10 11:14:54 1090
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人