2013-02-26 70 views
0

在这种情况下,我们可以使用字符优先级(如'h')还是'l'(低),并使用它来实现优先级队列?我们可以在优先队列中使用字符值吗?

struct node { 
int data; 
char c; 
struct node *next; 
}; 
+1

是的。由于字符被编码为数字(因此您仍然使用数字来确定优先级,但它不一定是顺序的)。但我没有看到好处。 – StoryTeller 2013-02-26 16:32:47

+0

是的,你可以,只需定义你自己的cmp函数(或者operator <) – lostyzd 2013-02-26 16:33:06

+0

你能否提供一个关于如何在这种情况下实现队列的示例代码? – SaM 2013-02-26 16:36:29

回答

1

虽然你可以做到这一点。我假设你只是想使用有意义的名字来表示优先级而不是幻数。

你可能要考虑使用一个枚举:

enum QueuePriority 
{ 
    HIGH, 
    MEDUIM, 
    LOW 
}; 

struct node 
{ 
    int data; 
    enum QueuePriority priority; 
    struct node *next; 
}; 

这有没有创建一个自定义的比较函数/运营商的利益。由于只要枚举值按正确的顺序内置就会执行。
(我有他们HIGH == 0作为在一些系统的约定,但你可以很容易地反过来)。

+0

感谢您的信息。 – SaM 2013-02-26 16:43:37