⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sortednodelist.cs

📁 A .NET Path Finder Library Path Finder Library is a .NET library that currently contains one type c
💻 CS
字号:
//This will later be replaced with something fast such as a binary heap.

using System.Collections.Generic;

namespace HenizeSoftware
{
  namespace PathFinding
  {
    class NodeComparer : IComparer<Node>
    {
      public int Compare(Node a, Node b)
      {
        return a.TotalCost - b.TotalCost;
      }
    }

    class SortedNodeList
    {
      List<Node> list = new List<Node>();
      NodeComparer nodeComparer = new NodeComparer();

      public int Count
      {
        get { return list.Count; }
      }

      public Node NodeAt(int i)
      {
        return list[i];
      }

      public void RemoveAt(int i)
      {
        list.RemoveAt(i);
      }

      public int IndexOf(Node n)
      {
        return list.IndexOf(n);
      }

      public int Add(Node n)
      {
        int k = list.BinarySearch(n, nodeComparer);
          
        if (k == -1) // no element
          list.Insert(0, n);
        else if (k < 0) // find location by complement
        {
          k = ~k;
          list.Insert(k, n);
        }
        else if (k >= 0)
          list.Insert(k, n);

        return k;
      }

      public Node RemoveFirst()
      {
        Node n = list[0];
        list.RemoveAt(0);
        return n;
      }

    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -