【问题标题】:Finding a value within a linked list在链表中查找值
【发布时间】:2020-11-15 14:17:37
【问题描述】:

我现在正在学习 C# 中的链接列表,但在处理它们时遇到了一些麻烦。我已经弄清楚它们是什么以及如何制作它们,但是我有一个任务,我只是不知道从哪里开始。基本上,我正在构建一个静态函数,它接收一个链表(在函数的标题中称为“节点 I”)和两个数字(“int start”和“int end”) Int start 是列表中的一个位置(如如果 start=3,它指的是列表中的第三位)。我需要打印出这两个数字之间的列表中的值。

我的问题是,我仍然不确定如何到达列表中的(开始)位置或(结束)位置。在一个数组中,我可以只写 arr[start] 但据我了解,你不能用链表来做到这一点,只能从列表的头部开始,然后从那里一个接一个地去。但是当“开始”可以是任何数字时,我如何从列表的头部转到(开始)?

我想要一个提示或一些示例代码。

【问题讨论】:

  • 请在问题中添加链表类的定义和到目前为止的代码。

标签: c# linked-list


【解决方案1】:

首先,我建议您分享您当前拥有的任何代码,因为这将有助于其他人帮助/理解您。

鉴于缺乏链表类的信息,所提供的示例是对在 Main 方法中初始化的 int 链表完成的。您可以使用 while 和链表的First 属性来帮助您遍历列表。看看PrintLinkedList 方法,看看它是否对您有任何帮助。

static void Main(string[] args)
{
    var testLinkedList = new LinkedList<int>();
    testLinkedList.AddFirst(1);
    testLinkedList.AddFirst(2);
    testLinkedList.AddFirst(3);
    testLinkedList.AddFirst(4);
    testLinkedList.AddFirst(5);
    testLinkedList.AddFirst(6);
    testLinkedList.AddFirst(7);
    PrintLinkedList(testLinkedList, 3, 6);
}

private static void PrintLinkedList(LinkedList<int> list, int start, int end)
{
    var index = 0;
    while (list.First != null)
    {
        if (index >= start && index <= end)
            Console.WriteLine(list.First.Value);
        
        index++;
        list.RemoveFirst();
    }
}

【讨论】:

  • 嗨。所以,我没有代码(我只是不知道从哪里开始)并且问题没有提供任何代码。它只是说该函数接收到一个充满数字的列表。您的代码实际上有很大帮助,但让我确保我做对了:这个 list.RemoveFirst()... 它有什么作用?我从来没有听说过这个命令。你用这个删除列表的头部吗?没有这个命令如何遍历列表?
  • 是的,我正在用这种方法删除列表的头部。查看LinkedList<T> C# reference 了解您可以使用的方法。
猜你喜欢
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2021-07-30
  • 2018-12-16
  • 2012-05-03
相关资源
最近更新 更多