如何使用排序链接列表实现优先级队列?

时间:2011-10-23 07:47:47

标签: c# data-structures queue linked-list

我想在c#中实现这个,我准备好了我的链表类,但是当我使用这个Sort方法对类进行排序时会出现问题。如何优先考虑元素,以便优先级最高的元素首先出列。

        public void Sort()
   {
       ListNode current=first;
       int temp;

       for (int i = 0; i < counter; i++)
       {
           while (current.Next != null)
           {

               if (current.Data > current.Next.Data)
               {
                   temp = current.Data;
                   current.Data = current.Next.Data;
                   current.Next.Data = current.Data;
               }
               current = current.Next;
           }
       }
   }

2 个答案:

答案 0 :(得分:2)

稍微分析一下你的代码:

这看起来像冒泡的1个笔划,所以不要指望它对所有东西进行排序。

它只会确保最大值成为 last 元素。只有在你修复交换部分之后:

if (current.Data > current.Next.Data)
{
  temp = current.Data;
  current.Data = current.Next.Data;
  current.Next.Data = temp;
}

答案 1 :(得分:0)

我认为你不必像这样对列表进行排序,只需创建一个插入例程,在正确的位置插入任何新元素,列表将始终排序。

Rgds GJ