如何在一个链接列表中创建多个节点,然后在节点中进行迭代
我正在学习如何在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 headNod
6 2024-04-26
编程技术问答社区
反转一个单一的链式列表
我希望我使用正确的术语. 我列出了一个单链列表. class MyStack { public Node Initial { get; set; } public MyStack() { Initial = null; } public void Push(int data) { var node = new Node { Data = data, Next = Initial }; Initial = node; } public int Pop() { int res = Initial.Data; Initial = Initial.Next; return res; } public int Sum() { int sum = 0; Node c
12 2024-04-26
编程技术问答社区
在一个单一的链表上交换节点
从很长一段时间以来,我就没有使用C或C ++,所以请完全忘记指针.我熟悉C#,并为此写了基本版本.需要知道我是否做对/错? 输入:链接列表a-> b-> c-> d-> e-> null 输出:链接列表b-> a-> d-> c-> e-> null 我们必须编写代码,以使内存位置交换而不是节点值. public void SwapLinkedList(LinkedList LL) { LinkedListNode current = LL.First; while (current.Next != null) { int temp = current.Next.Value; current.Next.Value = current.Value; current.Value = temp;
10 2024-04-26
编程技术问答社区
C# LinkedList<>通过索引移除
给定A: LinkedList myList; 如何在index n上删除元素?我似乎找不到任何方法,只有一种方法可以通过值删除,这是不好的,因为此特定列表可以具有重复的值. eg: myList.removeAt(n); 解决方案 链接列表在速度方面具有很大的优势,如果您添加或删除有现有参考的节点,但是当您没有参考时,您可以做的最好的就是将列表漫步到索引,抓住节点,然后删除. 这是执行该过程的扩展方法.如果您希望以后将其插入到其他列表中,或者您将其在列表中的位置移动. public static class ExtensionMethods { public static LinkedListNode RemoveAt(this LinkedList list, int index) { LinkedListNode currentNode = list.First;
14 2024-04-25
编程技术问答社区
c# 链接表如何获得最后一个元素之前的元素
我尝试在Windows表单应用程序中实现重做撤消. i构建了一个linkedlist,列表的每个入口都是将所有Elemnts保存在表单中的状态的类. 每次点击"保存"按钮,插入此列表的表单元素的最后状态. 当用户单击撤消按钮时,我想获取列表的入门(最后一个) 并加载它. 我不知道在链接列表中的Elemnts之前获得这是什么简单的方法? 我的代码看起来像: public class SaveState { public int comboBox1; public int comboBox2; .......... public SaveState() { ....... } } LinkedList RedoUndo = new LinkedList(); #
2 2024-04-25
编程技术问答社区
LinkedList与List<T>的对比
可能的重复: 当我应该使用列表与linkedlist 如果我希望不使用索引访问索引来完成我的数据结构,我可以通过使用多少来节省多少 linkedlist超过列表? 如果不是100%确定我永远不会使用索引访问,我想知道差异. 假设我有N实例.在linkedlist中插入和删除仅是o(1)op,在列表中,它可能是o(n),但是由于它进行了优化,很高兴知道某些n值的区别是什么. 说n = 1,000,000,n = 1,000,000,000 解决方案 List只是数组上的包装器. LinkedList仅在访问顺序数据(向后还是向后)时,最有效. . 链接列表提供非常快速的插入或删除列表成员.链接列表中的每个成员都包含一个指向列表中下一个成员的指针,以便在位置I中插入成员: update the pointer in member i-1 to point to the new member set the pointer in the new me
12 2024-04-24
编程技术问答社区
在不创建新的LinkedList的情况下反转一个Singly LinkedList
我正在学习linkedlist,并尝试使用Sighly LinkedList Collection逆转相同的内容. 挑战是list.next是仅阅读.因此您不能更改指针,您必须交换价值. 另外,我正在尝试以同一单独的linkedlist(而不创建任何新的LinkedList)实现此目标 这是我的代码使用另一个LinkedList,而不是来自集合,而是创建节点类.请帮助! using System; using System.Collections.Generic; using System.Text; namespace MyProject { public class Node { public int value; public Node next; public Node(int value) { this.value = value; ne
6 2024-04-23
编程技术问答社区
创建一个非常简单的单循环列表 C#
是否有人使用C#? 非常简单地实现了一个非常简单的循环链接列表 我有这个链接列表,但我不知道如何制作cicular: public class LinkedList { public class Node { public Node next; public Object data; } private Node head; public void Add(Object data) { Node toAdd = new Node(); toAdd.data = data; Node current = head; current.next = toAdd; } }
8 2024-04-23
编程技术问答社区
实施一种算法,找出单链表中从第 k 个元素到最后一个元素的顺序
实现算法以找到单个链接列表的kth到最后一个元素. 是上述问题的一个很好的解决方案,逆转链接列表然后再次浏览并获取KTH元素? 解决方案 首先列表是singly-linked.因此,这是一个很好的提示,您不应该尝试扭转它,因为您需要尽可能多的存储来制作复制. 您可以使用Turtle-Hare算法的修改版本: 在列表开始时使用hare指针 将其移开至少K元素 如果您之前击中last元素,则找不到Kth到最后一个元素. 将turtle指针放在列表的开头 现在,每次移动hare指针时,都将hare指针运行到列表的结尾,移动turtle. hare指针到达列表的末端时,turtle在Kth上到最后一个元素.
12 2024-04-22
编程技术问答社区
C 语言中链接列表的问题
提示我得到的提示要求在C中提供一个链接列表的程序,并为用户提供了在链接列表上执行不同功能的选项.所需的功能是: isempty():检查列表是否为空并返回值表示是否为空的值 add():在列表的尾部添加一个元素 insert():在列表中的特定索引上插入元素 find():查找存储特定值的索引. .如果函数失败,则返回一个值,表示 get():获取以特定索引存储的值 remove():删除列表中特定值的第一次发生.如果函数失败返回一个值,表示 替换():替换存储在特定索引上的值 delete():在特定索引处删除元素. .如果函数失败,则返回一个值,表示 list():以格式[a,b,c] 打印列表的元素 当我调用add_tail函数时,它允许我输入要添加的值,但是大约一分钟后,我在终端收到一条消息,说该程序被杀死.是什么造成的?我还在主函数中遇到的WARE循环问题,用于打印菜单并获取用户输入.菜单将在我第一次运行程序时正常打印,但是在完成操作后,菜单打
18 2024-04-22
编程技术问答社区
应该使用哪种方法:数组与链表?
我计划在不使用Queue类的情况下实现有限的队列.在阅读了Arrays和LinkedList的利弊后,我更倾向于使用数组来实现队列功能.该集合将是固定尺寸的.我只想添加和删除队列中的项目. 之类的东西 public class BoundedQueue { private T[] queue; int queueSize; public BoundedQueue(int size) { this.queueSize = size; queue = new T[size + 1]; } } 而不是 public class BoundedQueue { private LinkedList queue; int queueSize; public BoundedQueue(int size) { this.queueSize = size;
8 2024-04-22
编程技术问答社区
C#-LinkedList-如何删除指定节点后的所有节点?
我正在使用通用链接列表实现撤消/重做缓冲区. 在这种状态下: [顶部] state4(撤消) state3(撤消) state2 state1 [底部] 当我推动推动时,我想在当前一个状态后删除所有状态,然后推新状态. 我当前的旁路是做while (currentState != list.last), list.removeLast();,但很烂 linkedlist只需支持删除,删除First&removelast ... 我想要诸如removeallnodesafter(linkedlistnode ...)? 之类的东西 我该如何很好地编码,而不会通过所有节点进行迭代?也许有扩展?... 解决方案 我在标准LinkedList中看不到任何东西可以让您这样做.您可以在 powercollections 和 c5 collections 如果需要 - 或者只是滚动自己的LinkedList类型.这是要实现的简单集合之一,尤其是
6 2024-04-19
编程技术问答社区
面试问题:从未排序的链表中删除重复的内容
我正在阅读 2.1写代码以从未分类的链接列表中删除重复项.跟随 UP:如果您将如何解决此问题 不允许临时缓冲区? 我正在用C#解决它,所以我做了自己的Node类: public class Node where T : class { public Node Next { get; set; } public T Value { get; set; } public Node(T value) { Next = null; Value = value; } } 我的解决方案是在列表中迭代,然后,对于通过列表的其余部分进行迭代的每个节点,然后删除任何重复项(请注意,我尚未按照本书的指示进行编译或测试): public void RemoveDuplicates(Node head) { // Iterate through the list Node ite
2 2024-04-19
编程技术问答社区
.NET中的LinkedList是一个循环链接列表吗?
我需要一个循环链接列表,所以我想知道LinkedList是否是循环链接列表? 解决方案 否.这是一个双重链接列表,但不是循环链接列表.有关此. linkedlist 为您自己的循环链接列表奠定了良好的基础.但是它确实具有一定的第一和最后一个属性,并且不会围绕这些属性列举,适当的循环链接列表将会. 其他解决方案 每当您想在列表中移动"下一个"件时,可以快速使用它: current = current.Next ?? current.List.First; 其中电流为LinkedListNode. 其他解决方案 虽然LinkedList的公共API不是通函,但实际上是在内部.咨询如何实现: // This LinkedList is a doubly-Linked circular list. internal LinkedListNode head; 当然,要隐藏它的圆形,遍历列表的属性和方法,以防止将其包裹回头部. link
6 2024-04-17
编程技术问答社区
在现实世界中,应该使用关联列表的例子有哪些?
另一位程序员提到,他们还没有找到用于在其职业生涯中任何专业软件中使用链接列表数据结构的用例.我想不出任何好的例子.他主要是C#和Java开发人员 任何人都可以举一些示例,这是解决特定现实世界问题的正确数据结构吗? 相关: 链接列表的实际,真实世界的例子是什么? 解决方案 一个现实世界的示例将是一个FIFO队列.一个简单的基于数组的列表对此非常不好,因为您需要在一端添加并在另一端删除,其中一个操作将为O(n)带有基于数组的列表(除非您将额外的逻辑添加到使用起始索引和结束索引),而两者都是o(1),链接列表而无需额外努力. 其他解决方案 链接列表提供了比静态或动态扩展数组等可比数据结构的几个优点. linkedlists不需要连续的内存块,因此可以帮助减少记忆碎片 LinkedLists支持有效删除元素(动态阵列通常会迫使所有元素的变化). LinkedLists支持有效增加元素(如果特定添加超过当前容量,则动态数组可能会导致重新分配 +副本) )
10 2024-04-17
编程技术问答社区
为什么关联列表一般比列表慢?
我开始在我的一些C#算法中使用一些LinkedList的而不是列表,希望加快它们的速度.但是,我注意到他们只是感觉较慢.像任何好的开发人员一样,我认为我应该进行尽职调查并验证自己的感受.因此,我决定对一些简单的循环进行基准测试. 我认为将收藏品用一些随机整数填充应该足够.我以调试模式运行此代码,以避免任何编译器优化.这是我使用的代码: var rand = new Random(Environment.TickCount); var ll = new LinkedList(); var list = new List(); int count = 20000000; BenchmarkTimer.Start("Linked List Insert"); for (int x = 0; x
6 2024-04-17
编程技术问答社区
在C#中指向结构的指针,以创建一个链接列表
c#不喜欢指针,但是我现在需要使用它们来创建一个链接列表,就像我们在C中一样.结构很简单: public unsafe struct Livro { public string name; public Livro* next; } 但我会发现错误:"无法接收地址,获得大小或声明指向托管类型的指针".有什么想法吗? 解决方案 您只能使用class而不是struct: public class Livro { public string Name { get; set; } public Livro Next { get; set; } } 这将自动提供适当的行为. 话虽如此,您可能只想使用 LinkedList 从直接的框架. 其他解决方案 问题是字符串声明.您必须走低水平并使用char*指针.使用unsafe留下了离开托管世界的所有头痛... 其他解决方案 您
24 2024-04-17
编程技术问答社区
C#等同于java数组表,支持获取、设置和删除某些索引
我是Java程序员,之前我已经使用了Java ArrayList,现在我想在C#中使用类似的东西.我需要的一些选择是在此Java代码中: String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"}; ArrayList arrayList = new ArrayList(35); arrayList.add(strs[0]); arrayList.add(strs[1]); arrayList.remove(0); arrayList.set(0, strs[2]); String s = (String) arrayList.get(1); 我使用了C#ArrayList和LinkedList,但是它们没有我需要的这些简单选择. C#支持使用索引,插入和从某些索引中删除的对象有另一个选项? 解决方案 使用List String[] strs = new String[]{"str1"
28 2024-04-14
编程技术问答社区
Java中的收益率
我使用generics在Java中创建了一个链接列表,现在我希望能够迭代列表中的所有元素.在c#中,我将在链接列表中使用yield return,浏览列表中包含的元素列表. 我将如何创建上述Java版本,我可以在链接列表中包含的所有项目上迭代? 我希望能够编写代码ala LinkedList authors = new LinkedList(); for (Iterator i = authors.Values ; i.HasNext()) doSomethingWith(i.Value); 并认为该值"属性"/方法将包括类似于 的代码 LinkedListObject current = first; While (current != null){ yield return current.getValue(); current = current.get
12 2024-04-13
编程技术问答社区