Tag: data structures

如何在链表中创建多个节点然后遍历节点

我正在学习如何在c#中创建一个链表。 我有以下代码,不适合我。 我只想在主体中添加节点,如下所示,然后迭代将打印到控制台的所有节点。 using System; class node { public object data; public node next; public node() { data = null; next = null; } public node(object o) { data = o; next = null; } public node(object data, node next) { this.data = data; this.next = next; } } class linkedList { private node headNode; […]

如何搜索特定的结构值? 也许更好的方法?

我正在尝试找到我之前创建的具有特定值的结构。 一旦找到它,我想在该结构上设置变量。 我不知道该怎么做。 有更好的方法吗? 也许上课? 结构应该工作吗? 例如,我的结构: public struct MyTest { public string device; public string status; public string revision; public string number; public string ledmo; } 我的测试代码: MyTest thisTest=new MyTest(); thisTest.device=blah; thisTest.number=blah2; MyTest thisTest2=new MyTest(); thisTest2.device=blah5; thisTest2.number=blah6; //Another Part in my code. //Need to find the MyTest Structure that ‘device’ variable = the string […]

关于生成无法追踪的发票ID的想法

我想在我的应用中为客户打印发票。 每张发票都有一个发票ID 。 我希望ID为: 顺序(最近输入的ID迟到) 32位整数 不像1 2 3那样容易追踪,所以人们无法分辨出我们销售的商品数量。 我自己的想法:自特定日期和时间以来的秒数 (例如1/1/2010 00 AM)。 任何其他想法如何生成这些数字?

图邻接列表实现

我试图用C#表示Adjacency List的图形,如下面的代码。 但我想知道在哪里可以找到更好的C#实现。 喜欢这个Java网站: http : //algs4.cs.princeton.edu/41undirected/Graph.java.html 为了改进这个实现,我有一些问题: 是否有另一种简单的数据结构可供使用,并且您能够更轻松地进行DFS , BFS , Find the Shortest-path操作? 或者根据要解决的问题,数据结构变化太大了? ===已编辑=== 我试图将数据结构实现如下。 OBS :这种方法看起来很简单,但后来我意识到这不太适合DFS,例如,因为你需要一直跟踪LinkedList的第一个元素。在我的解决方案中似乎最好使用一个自定义创建的链接列表,而不是LinkedList 。 考虑到下面的评论并保持简洁,我做了一些改变。 但我不知道这些变化是否会影响进一步的运营,比如BFS 。 为了能够拥有直接和间接的图形,我认为使用接口比使用属性更好。 public interface IGraph { void InsertEdge(int edgeAKey, int edgeBKey); void IsertNewVertex(int vertexKey); LinkedList FindByKey(int vertexKey); bool ExistKey(int vertexKey); } 为了使它尽可能简单,我们可以使用已经实现的数据结构,如Dictionary和LinkedList 。 而不是使用object作为Dictionary key ,为了简化我们可以在Vertex创建一个key (或label )和一个value ,如果你想添加一个已存在于另一个Vertex 。 public class […]

用于Excel克隆的正确数据结构

假设我正在使用C#中的Excel克隆。 我的网格表示如下: private struct CellValue { private int column; private int row; private string text; } private List cellValues = new List(); 每次用户添加文本时,我只需将其打包为CellValue并将其添加到cellValues中。 给定一个CellValue类型,我可以在O(1)时间内确定它的行和列,这很好。 但是,给定一个列和一行,我需要循环遍历整个cellValues以查找该列和行中的文本,这非常慢。 另外,给定一个文本,我也需要遍历整个事情。 是否有任何数据结构我可以在O(1)时间内完成所有3个任务? 更新:通过一些答案,我不认为我找到了一个我喜欢的答案。 我可以吗: 不保留2个以上的CellValue副本,以避免同步它们。 在C世界中,我会很好地使用指针。 可以动态添加行和列(与Excel不同)。

如何在C#中生成马尔可夫链

我想用C#创建这个马尔可夫链。 我需要知道除了邻接列表之外是否还有其他结构可以在这种情况下更好地工作。 另外,我如何使用现有的.Net集合类型来实现它。

清洁代码:对象应该具有公共属性吗?

我正在阅读“清洁代码”一书,并且正在努力解决这个问题。 在讨论对象和数据结构时,它指出以下内容: 对象隐藏抽象背后的数据,并公开对该数据进行操作的函数。 数据结构公开其数据并且没有有意义的function。 所以,我从中获得的是我不应该在我的对象上有任何公共属性,我应该只有对属性执行操作的方法。 如果我确实需要访问属性,它们应该在数据结构上,可以从我对象上的方法返回? 使用这种方法,似乎我需要为我的对象上的Height属性使用GetHeight()和SetHeight()方法,而不是仅使用属性的get和set 。 也许我并不完全理解建议的内容,但这是我对“ 对象隐藏数据 ”的理解。 如果你能帮助我理解这一点,我将非常感激! 提前致谢!

在C#中寻找后缀树实现?

我已经实施了一个研究项目的基本搜索。 我试图通过构建后缀树来提高搜索效率。 我对Ukkonen算法的C#实现很感兴趣。 如果存在这样的实现,我不想浪费时间自己动手。

将有向无环图(DAG)转换为树

我正在尝试实现algoritm将Directed Acyclic Graph转换为Tree(为了好玩,学习,kata,命名它)。 所以我想出了数据结构Node: /// /// Represeting a node in DAG or Tree /// /// Value of the node public class Node { /// /// creats a node with no child nodes /// /// Value of the node public Node(T value) { Value = value; ChildNodes = new List<Node>(); } /// /// Creates a node […]

如何创建二叉树

我不是指二进制搜索树。 例如,如果我将值1,2,3,4,5插入到二叉搜索树中,则inorder遍历将给出1,2,3,4,5作为输出。 但是如果我将相同的值插入到二叉树中,则inorder遍历应该给出4,2,5,1,3作为输出。 可以使用动态数组创建二叉树,其中对于索引n中的每个元素,2n + 1和2n + 2分别表示其左和右子节点。 因此,表示和级别顺序遍历在这里非常容易。 但我认为,有序,下订单,预购很难。 我的问题是我们如何创建二叉树像二叉搜索树。 即。 有一个包含数据的树类,左右指针而不是数组。 这样我们就可以递归地进行遍历。