高手来,如何用C#实现一个添加,移出操作的时间复杂度为O(1)的双向链表,什么ArrayList,Queue,LinkedList都可以不用说了,说了也不给分.
这些的时间复杂度都不是O(1)
可以用不安全代码....
这些的时间复杂度都不是O(1)
可以用不安全代码....
解决方案 »
- 遍历list集合,向listview中添加图片和数据
- C# 如何构建FIN数据包,如何发送
- 【求助】System.InvalidOperationException: 实例失败。
- C#自动提交表单的问题
- 这个框是用什么控件阿
- 怎样让主窗体打开的新窗体一直处于被选中状态?
- 如何将cs文件里的string数组传递给javascript里去
- VC# 2005 Beta 2中怎么创建单选的菜单项组
- 谁有关于.Net Framework 1.1 和 2.0 的性能比较数据?
- 一个API问题(在线等待)
- CPU卡的MAC如何计算?
- 在线等,关于C# TCP/IP Socket 的 输据传输问题!!!!!!!!
楼主给分!
look
http://blog.csdn.net/zhiang75/archive/2007/11/07/1871987.aspx
public class MyQueue
{
public class Node
{
public Node(object data)
{
Data = data;
} public Node NextNode = null;
public Node UpNode = null;
public object Data = null;
}
Node beginNode = null;
Node endNode = null; public override string ToString()
{
return count.ToString();
} int count = 0; public int Count
{
get
{
return count;
}
set
{
count = value;
}
} public Node Dequeue()
{
if (beginNode.NextNode == null && count>1)
{
return null;
}
Node Rerurn = beginNode;
if (Rerurn != null)
{
beginNode = beginNode.NextNode;
--count;
Rerurn.NextNode = null;
Rerurn.UpNode = null; } return Rerurn;
} public void Enqueue(Node node)
{
if (beginNode == null)
{
beginNode = node;
endNode = node;
}
else
{
node.UpNode = endNode;
endNode.NextNode = node;
endNode = node;
endNode.NextNode = null;
}
++count;
}
}这个是我写的,问题是不是O(1)奇怪的.net
奇怪的问题...
提出一个要求让别人完全给你实现,就是作业;//高手呢?.....都跑哪里去了?
不会你的问题或对你的问题不感兴趣的就不是高手?时间复杂度是个理论值,一般指的是自己实现的代码
但调用.NET类库中的方法可能一个语句内部实现却很复杂
要求O(1)没有意义,
另不安全代码、垃圾回收什么的,不知与时间复杂度有何关系?