摘要: 有时候,自己下载的或者拷贝过来的JNI项目出现莫名错误,通常是找不到头文件,可能解决方案如下:Removing the C nature:The only way I could find to reliably removed the C nature from the project was b... 阅读全文
posted @ 2015-03-10 17:01 杨小明 阅读(1545) 评论(0) 推荐(0) 编辑
摘要: 在数学上,一个图(Graph)是表示物件与物件之间的关系的方法,是图论的基本研究对象。一个图看起来是由一些小圆点(称为顶点或结点)和连结这些圆点的直线或曲线(称为边)组成的。分类如果给图的每条边规定一个方向,那么得到的图称为有向图,其边也称为有向边。在有向图中,与一个节点相关联的边有出边和入边之分,而与一个有向边关联的两个点也有始点和终点之分。相反,边没有方向的图称为无向图。图的存储表示数组(邻接矩阵)存储表示(有向或无向)邻接表存储表示前向星存储表示有向图的十字链表存储表示无向图的邻接多重表存储表示一个不带权图中若两点不相邻,邻接矩阵相应位置为0,对带权图(网),相应位置为∞。一个图的邻接矩 阅读全文
posted @ 2012-11-19 22:34 杨小明 阅读(2865) 评论(0) 推荐(1) 编辑
摘要: 内排序的方法有许多种,按所用策略不同,可归纳为五类:插入排序、选择排序、交换排序、归并排序和分配排序。其中,插入排序主要包括直接插入排序和希尔排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括气(冒)泡排序和快速排序。 稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,堆属于不稳定排序。 就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称为就地排序。 1、插入排序:插入... 阅读全文
posted @ 2012-11-02 18:56 杨小明 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 堆栈(英文:stack),也可直接称栈。在计算机科学中,栈是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英文为top)进行加入资料(push)和输出资料(pop)的运算。 另外堆栈也可以用一维阵列或连结串行的形式来完成。 由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。 堆栈数据结构使用两种基本操作:推入(push)和弹出(pop)。头文件#ifndef sq_stack_h#define sq_stack_h#define STACK_INIT_SIZE 10 /... 阅读全文
posted @ 2012-10-24 16:17 杨小明 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 常用的构造散列函数的方法 1.直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)。若其中H(key)中已经有值了,就往下一个找,直到H(key)中没有值了,就放进去。 2. 数字分析法:分析一组数据,比如一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体相同,这样的话,出现冲突的几率就会很大,但是我们发现年月日的后几位表示月份和具体日期的数字差别很大,如果用后面的数字来构成散列地址,则冲突的几率会明显降低。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造 阅读全文
posted @ 2012-10-23 23:06 杨小明 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树。 下面的二叉查找树类主要实现了二叉查找树的以下操作:查找结点、插入结点、构造二叉查找树、查找指定结点的前驱和后继、删除结点。二叉查找树结点template <typename T>struct BiNode{ T k_data; BiNode<T> *LChild, *RChild; BiNode<T> *Parent; BiNode(T 阅读全文
posted @ 2012-10-19 19:04 杨小明 阅读(368) 评论(0) 推荐(1) 编辑
摘要: 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有个结点;深度为k的二叉树至多有个结点;对任何一棵二叉树T,如果其终端结点数为,度为2的结点数为,则。 满二叉树:一棵深度为k,且有(2的k次方)-1个节点成为满二叉树; 完全二叉树:深度为k,有n个节点的二叉树,当且仅当其每一个节点都深度为k的满二叉树,称之为完全二叉树; 下面是... 阅读全文
posted @ 2012-10-18 15:02 杨小明 阅读(1542) 评论(2) 推荐(2) 编辑
摘要: 字符串(String),是由零个或多个字符组成的有限串行。一般记为()。它是编程语言中表示文本的数据类型。 通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。 两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。 设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。 串的两种最基本的存储方式是顺序存储方式和链接存储方式。将整形转换为字符串//************************************// Method: ItoA// Description: Trans... 阅读全文
posted @ 2012-09-27 10:37 杨小明 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 链表的操作主要体现在对指针的操作,考察对指针的理解。对链表的操作关键在于对链表的遍历,一种是常规正序遍历,另一种是逆序时采用的递归遍历。链表复杂操作可能会需要多个指针协调工作。注意考虑链表为空的情况。//链表定义typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;typedef struct LNode_C{ char data; struct LNode_C *next;}LNode_C,*LinkList_C;typedef struct LNode_Dul{ int data... 阅读全文
posted @ 2012-09-27 10:24 杨小明 阅读(632) 评论(0) 推荐(0) 编辑
摘要: 一个袋子里有100个黑球和100个白球,每次从袋子里面取出两个球扔掉,再放入一个特定颜色的球。规则如下:如果取出的两个球颜色相同,则放入袋中一个白球;如果不同,则放入一个黑球。问题:最后剩余的一个球的颜色是黑色还是白色?方法一:黑球◊黑球=白球白球◊白球=白球黑球◊白球=黑球设黑球为1,白球为0:1◊1=00◊0=01◊0=1则原来的操作抽象为:对100个1和100个0做无序的异或操作。则(1^1^...^1)[100] ^(0^0^...^0)[100]简化为 0^0=0。故最终剩下白球。方法二:1)从数量上看,不管怎么操作,每次数量-1,所以最终剩下1个球;2)3个原子操作如下:A)出2白 阅读全文
posted @ 2012-09-04 11:35 杨小明 阅读(1051) 评论(0) 推荐(0) 编辑