自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度是O(1)。 思路:自定义栈内,另建一个栈,用于存储最小值的数组下标。即,入栈时,通过最小值索引栈,得到当前最小值下标,取数组对应值,如果比入栈的当前值大,则将当前值入栈下标,压入到索引栈中;出栈时,若当前出栈值的索引为索引栈的栈顶元素,则索引栈也进行栈顶元素出栈操作。

2015-04-28 15:33:58 265

原创 const关键字

     const 是constant 的缩写,“恒定不变”的意思。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。const可以修饰变量,函数的入参,函数的返回值。const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。 下面讨论一下const的主要作用和用法。     const的主要作用: (1)可以定义const常量,

2015-04-28 14:49:33 348

原创 n皇后问题

n皇后问题是由八皇后问题扩展而来的:在n*n的方格棋盘上 ,放置n个皇后,要求每个皇后不同行,不同列,不同左右对角线。 思路:用递归思想来解决问题。设place(k,n)是在1~k-1列上已经放置好了k-1个皇后,用于在k~n列放置n-k+1个皇后,显然place (k+1,n)表示已经在1~k列已经放置好了k个皇后,用于在k+1~n列放置n-k个皇后。可以看出place(k+1,n)比pla

2015-04-28 09:25:14 538

原创 二叉树的非递归遍历

树的非递归遍历比递归遍历要复杂,用栈来保存节点。 typedef struct node{ Elemtype data; struct node* lChild; struct node* rChild; }BTNode; 1.先序遍历非递归算法 思路:由先序遍历过程可知,先访问根节点,再访问左子树,最后访问右子树,因此,先将根节点进栈,在栈不空时循环:出栈p,访问*p节点,若右孩子

2015-04-26 14:02:17 395

原创 二叉树的递归遍历

二叉树的遍历可以用递归实现,也可以用非递归实现,递归实现简单,代码少。二叉树的遍历分为先序、中序、后序遍历。先序遍历是先遍历树的根节点,递归遍历左子树,最后递归遍历右子树。中序遍历是先递归遍历左子树,访问根节点,递归访问右子树,后序遍历是先递归遍历左子树,然后递归遍右子树,最后访问根节点

2015-04-26 13:50:34 291

原创 重建二叉树

1.已知先序序列为ABDGCEF,中序序列为DGBAECF,唯一的确定一棵二叉树的算法 思路:先序遍历的第一个节点就是根节点,首先在中序遍历中找到根节点的位置,根节点左侧的节点是左子树,右侧的节点是右子树,利用左右子树的节点个数,又可以在先序序列中确定左右子树的先序序列。找到左右子树的先序和中序序列之后就可以用同样的方法分别构建左右子树,下面的事情可用递归来完成。 typedef struct

2015-04-26 13:26:14 673

原创 斐波那契数列及相关问题

斐波那契数列是这样一个数列0,1,1,2,3,5,8,13,21......可以很容易的看出斐波那契数列的规律,斐波那契数列的定义如下:            0            n=0 f(n)=    1            n=1        f(n-1)+f(n-2)    n>1 问题:实现一个函数,输入n,求斐波那契数列的第n项 解法一:递归 long l

2015-04-26 11:31:56 375

原创 代理模式——动态代理

动态代理是实现对不同类,不同方法的代理。动态代理有多种实现方式, JDK的动态代理 和cglib的动态代理。 JDK动态代理:1)只能代理实现了某个接口的类。cglib动态代理:1)针对类来实现代理2)对指定目标类产生一个子类,通过方法拦截 技术拦截所有父类方法的调用,不能对final修饰的类进行代理3)需要引入一个jar包cglib-nodep-2.2.jar。

2015-04-20 18:43:50 317

原创 代理模式——静态代理

代理模式是常用的设计模式,包括远程代理,虚拟代理,保护代理和智能代理,智能代理又分为静态代理和动态代理。下面主要讲一下静态代理模式。     继承和聚合都能实现代理代理模式,首先要想的是哪种实现方式好呢?聚合就是一个类里有另一个类的对象。如果使用继承方法实现代理类功能的叠加,那么代理类会越来越多,造成类膨胀,聚合由于一个类里可以有另一个类的对象,代理之间可以相互传递,互相组合,比较灵活。

2015-04-20 17:03:38 336

原创 java反射机制(三)

   方法反射的基本操作重点就是如何获取方法对象并对方法对象进行反射操作。 1.如何获取某个方法 方法的名称和方法的参数列表唯一的确定一个方法 a)要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型 b) 获取方法 名称和参数列表来决定   Method m =  getMethod("name",parameterType),获取的是public的方法 ;其中

2015-04-20 15:29:58 274

原创 java反射机制(二)

本篇主要聊一下Class类的基本API操作,包括得到类的方法,成员变量,和成员函数。 1.获取类的类类型 getName()类的全称   getSimpleName()不带包名的类名称 2.获取方法(方法也是对象,一个成员方法就是一个Method类的实例对象,Method是java.lang.reflect.Method) a)Method[] ms = c.getMotheds()

2015-04-20 14:42:58 290

原创 java反射机制(一)

     JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用 它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。下面介绍下Class 类及java类加载机制。 一 、Class类 1.面向对象的世界里,万事万物皆对象 类也是对象,类是java.lang.Class的实例对象

2015-04-20 13:19:57 224

转载 c中不安全的函数

C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作(strcpy、strcat、sprintf 和 gets)。一般来讲,象“避免使用 strcpy()”和“永远不使用 gets()”这样严格的规则接近于这个要求。        今天,编写的程序仍然利用这些调用,因为从来没有人教开发人员避免使用它们。某些人从各处获

2015-04-19 12:42:54 578

原创 排序算法之插入排序

插入算法的基本思想是:每次将一个待排序的记录,按照其关键字的大小插入到前面已经排好序的子表中的合适位置,直到全部记录插入完成位置,下面介绍一下直接插入排序、二分插入排序及希尔排序。 直接插入排序:设待排序的记录存放在数组R[0..n-1]中,排序过程的某一中间时刻,R被分成两个子区间R[0..i-1]和R[i..n-1],前一个是已经排好顺序的有序区,后面是无序区。直接插入排序的基本操作是

2015-04-18 17:20:00 277

原创 排序算法之交换排序(冒泡和快排)

交换排序的基本思想:两两比较待排序记录的关键字,发现两个记录的次序相反时,进行交换,直到没有反序的记录为止。本篇介绍两种交换排序----冒泡排序和快速排序。 冒泡排序是一种经典的交换排序算法,基本思想是:通过无序区中相邻记录的关键字间的比较和位置的交换,使关键字最小的记录像气泡一样逐渐向上漂至水面。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,把关键字较小的记录放到关键字较大的记录的

2015-04-18 17:18:10 570

空空如也

空空如也

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

TA关注的人

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