引用维基百科:
使用传统的二叉树数据结构来实现二进制堆是完全可以接受的.在添加可以通过算法解析 的元素时,在二进制堆的最后一级找到相邻元素存在问题 ...
关于这种算法如何工作的任何想法?
我无法找到有关此问题的任何信息,因为大多数二进制堆都是使用数组实现的.
任何帮助赞赏.
最近,我注册了一个OpenID帐户,无法编辑我的初始帖子或评论答案.这就是我通过这个答案回应的原因.非常遗憾.
引用米奇小麦:
@Yse:你的问题是"如何找到二进制堆的最后一个元素"?
是的.或者更确切地说,我的问题是:"我如何找到非基于数组的二进制堆的最后一个元素?".
引用Suppressingfire:
你有没有提出这个问题的背景?(也就是说,你试图解决一些具体问题吗?)
如上所述,我想知道"找到非基于数组的二进制堆的最后一个元素"的好方法,这是插入和删除节点所必需的.
引用罗伊:
对我来说,使用普通的二叉树结构(使用定义为[data,pLeftChild,pRightChild]的pRoot和Node)并添加两个额外的指针(pInsertionNode和pLastNode)似乎是最容易理解的.pInsertionNode和pLastNode都将在插入和删除子例程期间更新,以便在结构中的数据发生更改时保持当前状态.这使O(1)访问结构的插入点和最后一个节点.
是的,这应该有效.如果我没有弄错,找到插入节点和最后一个节点,当它们的位置由于删除/插入而变为另一个子树时,可能会有点棘手.但我会试一试.
引用Zach Scrivena:
如何进行深度优先搜索......
是的,这将是一个很好的方法.我也会尝试一下.
我还在想,如果有办法"计算"最后一个节点和插入点的位置.具有N个节点的二进制堆的高度可以通过获取大于N的最小二次幂的log(基数2)来计算.也许可以计算最深级别上的节点数.然后可能确定如何遍历堆以到达插入点或节点以进行删除.
我想将我的对象序列化为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) 如果我的服务启动或停止,我有这个代码运行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脚本也会继续自行执行(它在计算机上附加一个文件)任何想法为什么?
我正在拆分我的一个较大的应用程序并引入一个'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
我试过了
<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");
但我只得到最后一个成员.我怎么能轻易解决这个问题?
在"完整".NET中,交换序列化程序非常容易 - 无论是在配置中还是通过自定义属性.但是,我想在Silverlight的WCF中做类似的事情 - 即提供不同的序列化引擎.我将提供引擎(protobuf-net) - 我只需要让WCF使用它!
上次我看到这个(前一段时间)没有明显的好选择.我最好的kludge是将数据公开为byte[]或Stream- 但这会失去所有"mex"善良.这是一种耻辱,因为它完全适用于完整的.NET.
这可能吗?WP7的加分点:)
我做了很多位置感知计算,通常采用GPS.我有自己的一个简单的NMEA解析器,它没有做任何特殊的事情 - 只是将GPS特定的句子转换成可用的数字,标志等等.
然而,在GPSD和Gypsy等项目上进行了大量积极的开发.如果GPS是一件简单的事情,项目很久以前就已经完成,只是进入维护模式.
我正在用C#设计一个新类,它有一些属性.我的用户会想知道他们每个人的变化.
什么是更好的选择?INotifyPropertyChanged实现的样式,或者只是具有与我的属性相对应的单独事件?或两者?
编辑:IIS6 ; 我不确定IIS7是不久的选择......
从开发人员的角度来看,我不断更改我的IIS设置,或者需要将其他团队的设置合并到不同的VM中."将配置保存到磁盘"对我来说从未真正起作用.
因为我们正在进行大量的小改动,所以网络安装项目从未真正发挥作用......针对网络管理员的工具不一定非常适合开发人员 - 我们有不同的目标和需求.
有没有人有一个脚本/工具/实用程序,可以让我们快速配置IIS?特别是:
从一些平面输入列表的发现(任何格式都可以).
我曾经读过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# ×5
collections ×2
.net ×1
algorithm ×1
asp.net ×1
binary-heap ×1
binary-tree ×1
css ×1
dynamic-css ×1
gps ×1
iis ×1
javascript ×1
list ×1
nmea ×1
parsing ×1
php ×1
properties ×1
protobuf-net ×1
set ×1
setting ×1
silverlight ×1
wcf ×1
xmlwriter ×1