摘要: 题目:已知一链表,每个节点除了有一个指向下一节点的指针外,还有一随机指针指向链表中的任意节点(可能为空,也有可能为自身),请复制一个链表,要求节点的顺序以及节点上的随机指针指向的节点位置和原链表一致。这个题目有个很巧妙的解法,可以达到O(n)的效率,其中心思想是把原始链表和复制链表先合并为一个有固定顺序的链表,然后给复制链表中每个节点的随机指针复制,最后再打断链表恢复原样。代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 复制链表{ class Pro 阅读全文
posted @ 2011-03-15 22:05 王海龙(Heaven) 阅读(564) 评论(1) 推荐(1) 编辑
摘要: body部分:到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?到底端了没有?style部分: #div{ height:150px; width:350px; overflow-y:scroll;overflow-x:hidden;border:1px dashed blue;} script部分:window.onload=function(){ $("div").ons 阅读全文
posted @ 2012-09-03 18:19 王海龙(Heaven) 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 如果要动态地改变数组所占用内存空间的大小,则需以数组为基础进一步抽象,以实现这个功能。以图2.2的学生宿舍为例,为了使A班的所学生住在连续的宿舍内,可以把A班的学生全部搬迁到连续的5间空宿舍内。其效果如图2.6所示: 现实中,为了让一个班新加入的10个学生能跟原来的学生住在一起而把班级整体搬迁,这样的做法显示不合适,因为搬迁的成本太高。但在计算机中,内存成片区域间的拷贝成本是非常低的,这样的解决方案是合理可行的。 但是这个解决方案还存在问题,如果一个班级频繁地有新学生加入,为了保证学生能住在连续的宿舍内,整个班级就不得不频繁地搬迁。可以采用以空间换时间的做法来解决这个问题,在学生每次搬迁 阅读全文
posted @ 2011-06-08 00:54 王海龙(Heaven) 阅读(799) 评论(0) 推荐(1) 编辑
摘要: 文章分类:Java编程 ArrayList是List接口的一个可变长数组实现。实现了所有List接口的操作,并允许存储null值。除了没有进行同 步,ArrayList基本等同于Vector。在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和 readObject进行了同步,其它比如add(Object)、remove(int)等都没有同步。 1.存储 ... 阅读全文
posted @ 2011-06-08 00:49 王海龙(Heaven) 阅读(647) 评论(0) 推荐(1) 编辑
摘要: 四 Dictionary 表示键和值的集合。Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同 Dictionary是一个泛型 ,他本身有集合的功能有时候可以把它看成数组 ,他的结构是这样的:Dictionary ,他的特点是存入对象是需要与[key]值一一对应的存入该泛型 //实例化对象 Dictionary dic = new Dictionary(); //对... 阅读全文
posted @ 2011-05-20 21:22 王海龙(Heaven) 阅读(812) 评论(0) 推荐(1) 编辑
摘要: /// <summary> /// 导出Excel方法 /// 作者:王海龙 /// 日期:2011年4月26日16:43:33 /// </summary> /// <param name="FileType">文件类型:application/ms-excel</param> /// <param name="FileName">文件名字</param> /// <param name="gridview"></param> publi 阅读全文
posted @ 2011-05-19 17:27 王海龙(Heaven) 阅读(450) 评论(0) 推荐(1) 编辑
摘要: 直接用$.post只能上传文本信息,上传文件是不可行的。最后只好模拟iframe来实现。发现相当的简单。<iframe name="ajaxUpload" style="display:none"></iframe><form name="from1" id="from1" method="post" action="url" enctype="multipart/form-data" target="ajaxUpl 阅读全文
posted @ 2011-05-10 10:31 王海龙(Heaven) 阅读(2063) 评论(1) 推荐(1) 编辑
摘要: 1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名]2 判断表是否存在Sql代码 if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 阅读全文
posted @ 2011-05-04 17:37 王海龙(Heaven) 阅读(603) 评论(1) 推荐(1) 编辑
摘要: 美国著名小说家艾萨克·阿西莫夫(Issac Asimov)的机器人经典系列。阿西莫夫发明了机器人学这个术语,并提出了机器人学三大法则,然后在这三个简单的设计原理基础上创作了一系列经典作品——大约有50本书。无论作品的情节如何变化,实际上都是从不同的角度来阐释这三大设计原理。我想,在座各位对机器人三大法则都不应该陌生。 机器人不得伤害人类,或袖手旁观人类受伤害。机器人必须服从人类命令,除非命令违反第一法则。机器人必须自卫,只要不违背第一和第二法则。这些恐怕是第一次出现在小说中的针对软件的设计原理了。虽然基于这三个设计原理的软件运行在虚构的机器人的“正电子脑”中,但我想这应该是软件设计原 阅读全文
posted @ 2011-04-22 07:21 王海龙(Heaven) 阅读(699) 评论(0) 推荐(1) 编辑
摘要: 在GridView导入数据到Excel时,出现了如下错误:Control "dg" of type 'GridView' must be placed inside a form tag with runat=server经过网上资料查找,原来是缺少该函数: public override void VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); }如果您的GridView没有设定分页,应该就可以正常的执行了。但是如果有设定 阅读全文
posted @ 2011-04-19 10:40 王海龙(Heaven) 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个数字,因此总的时间复杂度是O(n2)。要求的是把奇数放在数组的前半部分,偶数放在数组的后半部分,因此所有的奇数应该位于偶数的前面。也就是说我们在扫描这个数组的时候,如果发现有偶数出现在奇数的前面,我们可以交换他们的顺序,交换之后就符合 阅读全文
posted @ 2011-04-02 00:26 王海龙(Heaven) 阅读(351) 评论(0) 推荐(1) 编辑
摘要: 在C++、Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外。虚拟函数从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类。如:飞禽 bird = new 麻雀();那么飞禽就是申明类,麻雀是实例类。具体的检查的流程如下1、当调用一个对象的函数时,系统会直接去检查这个对象 阅读全文
posted @ 2011-03-22 09:39 王海龙(Heaven) 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 1.abstract方法只能在抽象类中声明,虚方法则不是。abstract方法必须在派生类中重写,而virtual则不必2.abstract方法不能声明方法实体,abstract public void SD();虚方法则可以public virtual void sdf(){Console.WriteLine("A");}3.虚方法可以实现多态,而抽象方法不可以。。。c#中的interface abstract 与 virtualinterface用来声明接口1.只提供一些方法规约,不提供方法主体. 如:public interface IPerson{void getN 阅读全文
posted @ 2011-03-21 11:21 王海龙(Heaven) 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。c 语言版:假设节点为定义为struct Node {Node* left;Node* right;};int GetDepth(Node* root) {if (NULL == root) { return 0;}int left_depth = GetDepth(root->left);int right_depth = GetDepth(root->right);return left_depth > right_depth ? left_depth + 1 : right_depth + 1;}c 阅读全文
posted @ 2011-03-17 10:12 王海龙(Heaven) 阅读(373) 评论(0) 推荐(1) 编辑
摘要: 写程序找出二叉树的深度。一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。假设节点为定义为struct Node {Node* left;Node* right;};int GetDepth(Node* root) {if (NULL == root) { return 0;}int left_depth = GetDepth(root->left);int right_depth = GetDepth(root->right);return left_depth > right_depth ? left_depth + 1 : right_depth 阅读全文
posted @ 2011-03-17 10:08 王海龙(Heaven) 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1. 引言关于继承,你是否驾熟就轻,关于继承,你是否了如指掌。 本文不讨论继承的基本概念,我们回归本质,从编译器运行的角度来揭示.NET继承中的运行本源,来发现子类对象是如何实现了对父类成员与方法的继承,以最为简陋的示例来揭示继承的实质,阐述继承机制是如何被执行的,这对于更好的理解继承,是必要且必然的。 2. 分析下面首先以一个简单的动物继承体系为例,来进行说明: publicabstractclassAnimal { publicabstractvoid ShowType(); publicvoid Eat() { Console.WriteLine("Animal always 阅读全文
posted @ 2011-03-16 09:48 王海龙(Heaven) 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题目:已知一链表,每个节点除了有一个指向下一节点的指针外,还有一随机指针指向链表中的任意节点(可能为空,也有可能为自身),请复制一个链表,要求节点的顺序以及节点上的随机指针指向的节点位置和原链表一致。这个题目有个很巧妙的解法,可以达到O(n)的效率,其中心思想是把原始链表和复制链表先合并为一个有固定顺序的链表,然后给复制链表中每个节点的随机指针复制,最后再打断链表恢复原样。代码如下:typ... 阅读全文
posted @ 2011-03-15 21:34 王海龙(Heaven) 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 这一章所有的东东都是关于发现Type的信息的,在编译时完全不知道该Type任何信息的情况下,创建一个Type的实例,访问Type的成员等。本章的这些信息典型的应用就是创建一个可以动态扩展的应用程序。可扩展的应用程序就是一个公司写一个主应用,由其他公司来写“插件”从而来扩展这个主应用。主应用不能针对这个“插件”(add-in)来创建或测试,因为这些“插件”是不同的公司写的或“插件”是在主应用卖出去以后才写的。这就是为什么主应用需要在运行时发现“插件”中的信息。 一个动态扩展的应用程序会利用21章所介绍的“公共语言运行时(CLR)宿主和应用程序域(AppDomain)”。宿主会在一个有自己的安全和 阅读全文
posted @ 2011-03-12 23:59 王海龙(Heaven) 阅读(531) 评论(0) 推荐(1) 编辑
摘要: 接上上篇文章,这章我们看实战代码Question: 首先 struct是一个结构 那么可以这样使用struct MyStruct{ public int a;}MyStruct struct;struct.a = 1; //编译通过,符合struct不用new的说法Rectangle rc; //Rectangle也是一个Struct啊,我还是不用newrc.X = 1; //Error,编译失败。 使用了未赋值的局部变量“rc”为什么???answer:之前说的这句,那在初始化所有字段之前,字段将保持未赋值状态,且对象不可用。没有错。因为对于rectangle结构体中,其x为字段(即属性)定 阅读全文
posted @ 2011-03-12 23:42 王海龙(Heaven) 阅读(234) 评论(0) 推荐(1) 编辑
摘要: class 用来声明类,struct用来声明结构类 class:类是面向对象变成的基本概念,是一种自定义数据的结构类型,通常包括:字段、属性、方法、构造函数、索引器、操作符等等。类是引用类型,可以继承和被继承,所有的类都继承自System.Object类。类通过new 来创建对象的实例,这个过程叫做实例化。在new一个类的实例的时候,对象保存了该实例的实际数据的引用地址,而对象的值保存在托管堆中(managed heap)声明:public class MyClass{}实例化:MyClass aclass=new MyClass();非静态类:通过创建赋给变量的“对象”或“实例”来使用类。静 阅读全文
posted @ 2011-03-12 23:25 王海龙(Heaven) 阅读(370) 评论(0) 推荐(1) 编辑