如何从 LinkedList 中提取 LinkedListNode

本文关键字:提取 LinkedListNode LinkedList | 更新日期: 2023-09-27 18:33:56

我有一个LinkedList,我用它来跟踪发送到这个类的连续数字。 (我最终想找到缺失的数字)。

我现在需要使用方法范围。AddAfter(recentNode,someNewNode),但我不能通过强制转换来做到这一点。 我错过了什么?

class ContiguousData 
{
    LinkedList<ContiguousDataValue> ranges = new LinkedList<ContiguousDataValue>();
    public void AddValue(int val)
    {
        LinkedListNode<ContiguousDataValue> recentNode = null;
        foreach (var range in ranges)
        {
            if (val > range.UpperInt)
            {
                if (val == range.UpperInt + 1)
                    range.UpperInt = val;
                else
                {
                    if (recentNode == null)
                        ranges.AddFirst(new ContiguousDataValue() { UpperInt = val, LowerInt = val });
                    else
                        ranges.AddAfter(recentNode, new ContiguousDataValue() { UpperInt = val, LowerInt = val });
                }
                break;
            }
            else if (val < range.LowerInt)
            {
                if (val == range.LowerInt - 1)
                    range.LowerInt = val;
                else
                {
                    // do  more logic (incomplete)
                }
            }
           // Compiler error
            recentNode = (LinkedListNode<ContiguousDataValue>)range;
        }
        if (ranges.Count == 0)
        {
            ranges.AddFirst(new ContiguousDataValue() { UpperInt = val, LowerInt = val });
            return;
        }
    }
    internal class ContiguousDataValue
    {
        public int UpperInt { get; set; }
        public int LowerInt { get; set; }
    }
}

由于铸造不起作用,如何将range转换为LinkedListNode<T>

如何从 LinkedList<T> 中提取 LinkedListNode<T>

我想

你正在寻找;

var ranges = new LinkedList<ContiguousDataValue>();
for (var recentNode = ranges.First;
     recentNode != null;
     recentNode = recentNode.Next)
{
  var range = recentNode.Value; 
  ranges.AddAfter(recentNode,someNewNode);
}