小编Joh*_*ohn的帖子

在C中实现链接列表优先级队列

您将如何使用C中的链接列表实现优先级队列?

典型的链表包括head指向指向另一个元素的元素,该元素最终以NULL链接列表的尾部结尾.例:

(Linked List | Head) ----> (Element | Next) ----> (Element | Next) ----> Null
Run Code Online (Sandbox Code Playgroud)

在基本场景中,通过使用先进先出(添加到列表末尾,从列表前面删除)FIFO方法将新元素添加到列表中.

但是,在我的情况下,必须考虑优先级值.更具体地说,每个元素可以被赋予1,2或3的优先级.具有最高优先级的元素被添加到列表的前面,而具有较低优先级的元素被添加到后面.插入列表会保持每个优先级的FIFO顺序.

因此,如果要一次将一个元素排入队列:

a 3, b 1, c 2, d 3, e 2
Run Code Online (Sandbox Code Playgroud)

输出应该是:( a 3, d 3, c 2, e 2, b 1按优先级排序,以及添加的顺序,而不是标准的先入先出方法,忽略优先级).

这是我所拥有的,但它没有优先权.您将如何实施优先级队列?

http://codepad.org/BMeuSgNBxd

一种方法是使用排序/优先级算法.除了算法之外,对我来说,一些主要的未知数/混淆是如何以及在何处存储优先级,它是否在实际元素中,例如:

(Linked List | Head)---->(a | 1 | Next)---->(b | 2 | Next)----> Null

要么

  q_enqueue(&q, "a", "1");
  q_enqueue(&q, "b", "2");
Run Code Online (Sandbox Code Playgroud)

在使用指针创建排序算法时,我将如何比较优先级.

c queue linked-list priority-queue fifo

1
推荐指数
1
解决办法
3566
查看次数

标签 统计

c ×1

fifo ×1

linked-list ×1

priority-queue ×1

queue ×1