小编Mar*_*ell的帖子

查找二进制堆的最后一个元素

引用维基百科:

使用传统的二叉树数据结构来实现二进制堆是完全可以接受的.在添加可以通过算法解析 的元素时,在二进制堆的最后一级找到相邻元素存在问题 ...

关于这种算法如何工作的任何想法?

我无法找到有关此问题的任何信息,因为大多数二进制堆都是使用数组实现的.

任何帮助赞赏.


最近,我注册了一个OpenID帐户,无法编辑我的初始帖子或评论答案.这就是我通过这个答案回应的原因.非常遗憾.


引用米奇小麦:

@Yse:你的问题是"如何找到二进制堆的最后一个元素"?

是的.或者更确切地说,我的问题是:"我如何找到非基于数组的二进制堆的最后一个元素?".

引用Suppressingfire:

你有没有提出这个问题的背景?(也就是说,你试图解决一些具体问题吗?)

如上所述,我想知道"找到非基于数组的二进制堆的最后一个元素"的好方法,这是插入和删除节点所必需的.

引用罗伊:

对我来说,使用普通的二叉树结构(使用定义为[data,pLeftChild,pRightChild]的pRoot和Node)并添加两个额外的指针(pInsertionNode和pLastNode)似乎是最容易理解的.pInsertionNode和pLastNode都将在插入和删除子例程期间更新,以便在结构中的数据发生更改时保持当前状态.这使O(1)访问结构的插入点和最后一个节点.

是的,这应该有效.如果我没有弄错,找到插入节点和最后一个节点,当它们的位置由于删除/插入而变为另一个子树时,可能会有点棘手.但我会试一试.

引用Zach Scrivena:

如何进行深度优先搜索......

是的,这将是一个很好的方法.我也会尝试一下.

我还在想,如果有办法"计算"最后一个节点和插入点的位置.具有N个节点的二进制堆的高度可以通过获取大于N的最小二次幂的log(基数2)来计算.也许可以计算最深级别上的节点数.然后可能确定如何遍历堆以到达插入点或节点以进行删除.

algorithm binary-tree binary-heap data-structures

14
推荐指数
4
解决办法
2万
查看次数

将对象序列化为xml和字符串,不带\ r \n特殊字符

我想将我的对象序列化为xml,然后序列化为字符串.

  public class MyObject
  {
    [XmlElement]
    public string Name
    [XmlElement]
    public string Location;
  }
Run Code Online (Sandbox Code Playgroud)

我想获得一个单行字符串,它会像这样:

<MyObject><Name>Vladimir</Name><Location>Moskov</Location></MyObject>
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的代码:

  XmlWriterSettings settings = new XmlWriterSettings();
  settings.OmitXmlDeclaration = true;
  settings.Indent = true;
  StringWriter StringWriter = new StringWriter();
  StringWriter.NewLine = ""; //tried to change it but without effect
  XmlWriter writer = XmlWriter.Create(StringWriter, settings);
  XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
  namespaces.Add(string.Empty, string.Empty);
  XmlSerializer MySerializer= new XmlSerializer(typeof(MyObject ));
  MyObject myObject = new MyObject { Name = "Vladimir", Location = "Moskov" };

  MySerializer.Serialize(writer, myObject, namespaces);
  string s …
Run Code Online (Sandbox Code Playgroud)

c# xmlwriter xml-serialization

14
推荐指数
2
解决办法
2万
查看次数

ServiceController状态未正确反映实际服务状态

如果我的服务启动或停止,我有这个代码运行PowerShell脚本.

Timer timer1 = new Timer();

ServiceController sc = new ServiceController("MyService");

protected override void OnStart(string[] args)
    {
        timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime);
        timer1.Interval = 10000;
        timer1.Enabled = true;
    }

    private void OnElapsedTime(object source, ElapsedEventArgs e)
    {
        if ((sc.Status == ServiceControllerStatus.StartPending) || (sc.Status ==  ServiceControllerStatus.Stopped))
        {
            StartPs();
        }
    }

    private void StartPs()
    {
        PSCommand cmd = new PSCommand();
        cmd.AddScript(@"C:\windows\security\dard\StSvc.ps1");
        PowerShell posh = PowerShell.Create();
        posh.Commands = cmd;
        posh.Invoke();
    }
Run Code Online (Sandbox Code Playgroud)

当我从cmd提示符中删除我的服务时工作正常但是即使我的服务启动并运行,powershell脚本也会继续自行执行(它在计算机上附加一个文件)任何想法为什么?

c# windows-services

14
推荐指数
1
解决办法
4880
查看次数

CSS/JS中的动态URL

我正在拆分我的一个较大的应用程序并引入一个'cdn'网址来存放常见的对象,如CSS,javascript和图像,以避免重复.但是,我需要做的是为我们的开发环境提供单独的URL,所以我可能有:

http://cdn-dev.example.com
http://cdn-qua.example.com
http://cdn.example.com
Run Code Online (Sandbox Code Playgroud)

取决于我们正在使用什么环境.我可以使用它来处理由我们的PHP代码生成的内容,但我对将要调用的.css和.js文件感到茫然.例如,我如何制作如下内容:

.cool-button { background-image: url('http://cdn.example.com/images/button.png'); }
Run Code Online (Sandbox Code Playgroud)

在不同的域之间切换?

处理这个问题的最佳方法是什么?

[编辑]

只是每个人都清楚,CDN地址是该网站的不同域名.因此,开发站点可能是http://www-dev.domain.com,它将使用http://cdn-dev.domain.com

javascript css php dynamic-css

13
推荐指数
2
解决办法
1万
查看次数

C#AppSettings:有一种简单的方法可以将集合放入<appSetting>

我试过了

<appSettings >
    <add key="List" value="1"/>
    <add key="List" value="2"/>
    <add key="List" value="3"/>
  </appSettings >
Run Code Online (Sandbox Code Playgroud)

System.Configuration.ConfigurationManager.AppSettings.GetValues("List");

但我只得到最后一个成员.我怎么能轻易解决这个问题?

c# collections set setting

13
推荐指数
1
解决办法
3万
查看次数

在Silverlight中使用自定义WCF序列化程序

在"完整".NET中,交换序列化程序非常容易 - 无论是在配置中还是通过自定义属性.但是,我想在Silverlight的WCF中做类似的事情 - 即提供不同的序列化引擎.我将提供引擎(protobuf-net) - 我只需要让WCF使用它!

上次我看到这个(前一段时间)没有明显的好选择.我最好的kludge是将数据公开为byte[]Stream- 但这会失去所有"mex"善良.这是一种耻辱,因为它完全适用于完整的.NET.

这可能吗?WP7的加分点:)

.net silverlight wcf serialization protobuf-net

13
推荐指数
1
解决办法
1056
查看次数

滚动您自己的NMEA解析器或使用开源GPS解析器?

我做了很多位置感知计算,通常采用GPS.我有自己的一个简单的NMEA解析器,它没有做任何特殊的事情 - 只是将GPS特定的句子转换成可用的数字,标志等等.

然而,在GPSD和Gypsy等项目上进行了大量积极的开发.如果GPS是一件简单的事情,项目很久以前就已经完成,只是进入维护模式.

  • 他们知道/做什么我不知道,因此我的代码没有说明?

parsing gps nmea

12
推荐指数
1
解决办法
9091
查看次数

什么更好?INotifyPropertyChanged还是有单独的*Changed事件?

我正在用C#设计一个新类,它有一些属性.我的用户会想知道他们每个人的变化.

什么是更好的选择?INotifyPropertyChanged实现的样式,或者只是具有与我的属性相对应的单独事件?或两者?

c# properties

12
推荐指数
1
解决办法
1272
查看次数

用于配置IIS6的开发人员工具

编辑:IIS6 ; 我不确定IIS7是不久的选择......

从开发人员的角度来看,我不断更改我的IIS设置,或者需要将其他团队的设置合并到不同的VM中."将配置保存到磁盘"对我来说从未真正起作用.

因为我们正在进行大量的小改动,所以网络安装项目从未真正发挥作用......针对网络管理员的工具不一定非常适合开发人员 - 我们有不同的目标和需求.

有没有人有一个脚本/工具/实用程序,可以让我们快速配置IIS?特别是:

  • 删除一切(开始清洁)
  • 添加一堆虚拟目录,每个目录都映射到应用程序基本路径
  • 设置为应用程序
  • 设置应用程序池(我们假设应用程序池已存在)
  • 如果需要,将ASP.NET版本设置为2.x.

从一些平面输入列表的发现(任何格式都可以).

asp.net iis

12
推荐指数
1
解决办法
1540
查看次数

继承List <T>来实现集合是个坏主意吗?

我曾经读过Imaar Spaanjars关于如何构建3层应用程序的文章.(http://imar.spaanjaars.com/416/building-layered-web-applications-with-microsoft-aspnet-20-part-1)这已成为我编码的基础.

因此,我通过继承a来实现集合List<T>.因此,如果我有一个名为Employee的类,要实现一个集合,我还将有一个Employees类,如下所示.

class Employee
{
   int EmpID {get;set;}
   string EmpName {get;set;}  

}

class Employees : List<Employee>
{
   public Employees(){}
}
Run Code Online (Sandbox Code Playgroud)

我从来没有真正质疑这一点,因为它为我做了工作.但是现在我开始尝试一些事情,我不确定这是否是正确的方法.

例如,如果我想从Employees获得一个子集,例如

 Employees newEmployees = (Employees) AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

这会抛出System.InvalidCastException.但是,如果我使用以下内容则没有问题.

List<Employee> newEmployees = AllEmployees.FindAll(emp => emp.JoiningDate > DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

那么我该如何实现Employees以便我不必List<Employee>在DAL或BLL中明确使用?或者我怎么摆脱InvalidCastexception?

c# collections list

12
推荐指数
2
解决办法
9357
查看次数