【问题标题】:How to replace an element in a LinkedList?如何替换 LinkedList 中的元素?
【发布时间】:2012-01-18 20:01:10
【问题描述】:

如何在 C# 中替换链表中的元素?虽然在 java 中可以使用 set 或 add 方法来替换列表中的特定元素...我找不到如何在 C# 中替换它。

【问题讨论】:

标签: c# .net replace linked-list


【解决方案1】:

链表节点没有Replace 方法。要替换节点,您必须:

  1. 找到要替换的节点。
  2. 在该节点之前插入一个新节点 (AddBefore)
  3. 删除原来的节点。

您也可以使用AddAfter。结果是一样的。

【讨论】:

    【解决方案2】:

    将值 2 替换为 3:

    LinkedList<int> ll;
    ll.Find(2).Value = 3;
    

    【讨论】:

    • +1 有趣。我将“替换元素”解释为替换节点,而您将其解释为更改值。我不能说任何一种解释都是“正确的”或“错误的”。但我更喜欢你的解决方案。
    【解决方案3】:

    使用LinkedList&lt;T&gt;,您可以处理LinkedListNode&lt;T&gt; 项目。 LinkedListNode&lt;T&gt; 有一个 Value 属性,您可以使用该属性获取或设置特定项目。

    与 c# 不同,Java 没有集成到语言中的属性的概念。在 Java 中,您通过添加手工制作的 set_Property 和 get_Property 方法来创建属性。可以像访问字段一样访问 c# 属性。

    Java:

    obj.set_MyProperty(123);
    x = obj.get_MyProperty();
    

    c#:

    obj.MyProperty = 123;
    x = obj.MyProperty;
    

    然而,在内部,c# 也调用 getter 和 setter 方法。您将在 c# 中声明这样的属性:

    private int _myProperty;
    public int MyProperty {
        get { return _myProperty; }
        set { _myProperty = value; }
    }
    

    在这种特殊情况下,当不涉及其他逻辑时,您可以使用自动实现的属性:

    public int MyProperty { get; set; }
    

    在您的链接列表中,您可以像这样更改列表的第一个元素:

    myLinkedList.Fist.Value = your new value;
    

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2021-09-16
      • 1970-01-01
      • 2014-01-22
      • 2017-12-16
      • 1970-01-01
      相关资源
      最近更新 更多