我会想知道是否存在一些逻辑来扭转链接列表只有两个指针。 以下用于使用三个指针(即p,q,r)来反转单个链表: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } q = first; } 有没有其他的替代scheme来扭转链表? 就时间复杂性而言,扭转单链表的最佳逻辑是什么?
如果你曾经使用Reflector,你可能会注意到C#编译器生成的types,方法,字段和局部variables,应该由debugging器进行“特殊”显示。 例如,以“CS $”开头的本地variables不会显示给用户。 匿名方法的闭包types还有其他特殊的命名约定,自动属性的后台字段等等。 我的问题:在哪里了解这些命名约定? 有谁知道一些文件? 我的目标是使PostSharp 2.0使用相同的约定。
在C#.Net 2.0中执行事务的最佳做法是什么? 什么是应该使用的类? 有什么缺陷等待所有提交和回滚的东西。 我刚刚开始一个项目,在将数据插入数据库时,可能需要执行一些事务。 任何有关交易的基本内容的反应或链接都是受欢迎的。
我只是想知道如何使用Visual Studio(2005) 自动增加我的文件的版本(和版本?)。 如果查找说C:\Windows\notepad.exe的属性,版本选项卡给出“文件版本:5.1.2600.2180”。 我想在我的dll的版本中得到这些很酷的数字,而不是版本1.0.0.0,让我们面对它有点沉闷。 我尝试了一些东西,但它似乎不是开箱即用的function,或者我只是在错误的地方(像往常一样)。 我主要与网站项目…. 我看了两个: http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx http://www.codeproject.com/KB/dotnet/build_versioning.aspx 我不敢相信这么做是一种标准的做法。 编辑: 它不能在VS2005中工作,据我所知( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
在C ++中通过引用传递指针有什么好处? 最近,我已经看到了许多select通过指针传递函数参数而不是通过引用传递的例子。 这样做有好处吗? 例: func(SPRITE *x); 随叫随到 func(&mySprite); 与 func(SPRITE &x); 随叫随到 func(mySprite);
我正在寻找一个有效的方法来计算b (比如a = 2和b = 50)。 为了开始,我决定看看Math.Pow()函数的实现。 但在.NETreflection器 ,我发现是这样的: [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical] public static extern double Pow(double x, double y); 当我调用Math.Pow()函数时,我可以看到里面发生了什么的一些资源是什么?
Path.Combine很方便,但在.NET框架中有没有类似的function? 我正在寻找这样的语法: Url.Combine("http://MyUrl.com/", "/Images/Image.jpg") 这将返回: "../../../Images/Image.jpg"
当我阅读其他人的代码,这些代码有指向具有参数的函数的指针时,我总是有点难过。 我记得,我花了一段时间才弄清了这个定义,同时试图理解一个用C编写的数值algorithm。 那么,你能分享一下你的技巧和想法:如何编写好的指向函数指针的types定义(Do's and Do not's),为什么它们是有用的,以及如何理解别人的工作? 谢谢!
C ++中有这样一件事情,使我长时间感到不舒服,因为我真的不知道该怎么做,尽pipe听起来很简单: 如何在C ++中正确实现工厂方法? 目标:使客户可以使用工厂方法而不是对象的构造函数实例化一些对象,而不会造成不可接受的后果和性能问题。 “工厂方法模式”是指对象内部的静态工厂方法或其他类中定义的方法或全局函数。 一般来说,“把X类实例化的正常方式redirect到构造函数以外的任何地方”的概念。 让我浏览一下我想到的一些可能的答案。 0)不要制造工厂,build造者。 这听起来不错(通常是最好的解决scheme),但不是一般的补救措施。 首先,有些情况下,对象build设是一个任务复杂到足以certificate其提取到另一个类。 但是即使把这个事实放在一边,即使对于使用构造函数的简单对象也是不行的。 我所知道的最简单的例子是一个2Dvector类。 这么简单,但棘手。 我希望能够从笛卡儿坐标和极坐标两方面构造它。 显然,我不能这样做: struct Vec2 { Vec2(float x, float y); Vec2(float angle, float magnitude); // not a valid overload! // … }; 那么我自然的思考方式是: struct Vec2 { static Vec2 fromLinear(float x, float y); static Vec2 fromPolar(float angle, float magnitude); // … }; 其中,而不是构造函数,导致我使用静态工厂方法…这基本上意味着我正在实施工厂模式,以某种方式(“class级成为自己的工厂”)。 […]
这个问题在这里已经有了答案: 如何枚举枚举? 14个答案 public enum Foos { A, B, C } 有没有办法来循环Foos的可能值? 基本上? foreach(Foo in Foos)