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

本文关键字:实现 优先队列 链表 排序 何使用 | 更新日期: 2023-09-27 18:12:01

我想在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;
           }
       }
   }

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

稍微分析一下你的代码:

这看起来像冒泡排序的一笔,所以不要指望它对所有内容进行排序。

它只会确保最大的值成为最后一个元素。只有在你修复了swap部分之后:
if (current.Data > current.Next.Data)
{
  temp = current.Data;
  current.Data = current.Next.Data;
  current.Next.Data = temp;
}

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

Rgds GJ