如何使用排序链表实现优先队列
本文关键字:实现 优先队列 链表 排序 何使用 | 更新日期: 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