Tag: linked list

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

我正在学习如何在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; […]

C# – LinkedList – 如何删除指定节点后的所有节点?

我正在实现一个带有通用LinkedList的undo / redo缓冲区。 在这种状态下: [最佳] state4(撤消) state3(撤消) state2 < – 当前状态 状态1 [底部] 当我执行Push时,我想删除当前状态之后的所有状态,然后推送新状态。 我当前的旁路是while (currentState != list.last), list.removeLast(); 但它很糟糕 LinkedList只支持Remove,RemoveFirst和removeLast …… 我想要像RemoveAllNodesAfter(LinkedListNode …)这样的东西? 如何在不迭代所有节点的情况下很好地编码? 也许有扩展?…

什么是应该使用链接列表的真实世界示例?

另一位程序员提到他们在职业生涯中没有找到在任何专业软件中使用链表数据结构的用例。 我想不出任何好的例子。 他主要是C#和Java开发人员 任何人都可以提供一些例子来说明这是解决特定现实世界问题的正确数据结构吗? 相关: 链接列表的实际现实示例是什么?

从单个链接列表中删除节点

据我所知,你可以这样做: 找到要删除的节点。 node.previous.next = node.next node.next.previous = node.previous node.previous = null node.next = null 如果您处于非GC环境中,请处置节点 如果您的列表是双重链接。 但是你如何用一个链表做到这一点? 我已经尝试了很多东西,但没有用:(我只是让它去删除一个特定的索引,或者它什么都不做

如何在C#中将LinkedList 添加到LinkedList ?

人们会想到简单的代码 llist1.Last.Next = llist2.First; llist2.First.Previous = llist1.Last; 可行,但显然在C#的LinkedList,First,Last中,它们的属性仅为Get。 我能想到的另一种方法是 llist1.AddLast(llist2.First); 但是,这也不起作用 – 它失败了,因为llist2的第一个节点已经在链表中。 这是否意味着我必须有一个循环,手动AddLast的llist2的每个节点到llist1? 这不是打败链表的效率????

为什么Stack 和Queue 用数组实现?

我正在Albahari兄弟的Nutshell中阅读C#4.0,我发现了这个: 堆栈在内部实现,其数组根据需要resize ,与Queue和List一样。 (第288页,第4段) 我不禁想知道为什么。 LinkedList提供O(1)头尾插入和删除(这应该适用于堆栈或队列)。 可resize的数组有O(1)缓冲插入(如果我没记错的话),但O(n)最坏的情况(我不确定删除)。 它可能比链表使用更多的空间(对于大型堆栈/队列)。 还有更多吗? 双链表实现的缺点是什么?

对链表进行排序

我在C#中编写了一个基本的链表类。 它有一个Node对象,它(显然)代表列表中的每个节点。 代码不使用IEnumerable,但是,我可以实现排序function吗? 我使用的语言是C#。 在C#中有这样的例子吗? 我正在使用这个样本 : 谢谢

在C#中创建循环链表?

在C#中创建循环链表的最佳方法是什么? 我应该从LinkedList 集合中派生出来吗? 我打算使用这个链接列表创建一个简单的地址簿来存储我的联系人(这将是一本糟糕的地址簿,但我不在乎因为我将是唯一一个使用它的人)。 我主要只想创建关键链表,以便我可以在其他项目中再次使用它。 如果您认为链接列表不是正确的方式,请告诉我哪种方式会更好。