2013-02-26 73 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