2014-05-24 27 views
-1

我正在使用queque和struct。我想使用enqueue函數和結構變量。然後我根據他們的性格和數量對列表進行排序。例如:如何在c中排序字符和數字?

我有3個字符:

1-

2 -C

3-ģ

C是最重要的價值。 C是列表中的第一個元素。在C之後,G是重要的,然後是A.

而且數字也從小到大排序。

我的結構sholud看到:

struct n{ 
    char i; 
    int a; 
    struct n *next; 
} 

,我必須使用排隊功能。它看起來像:

void enqueue (char i,int a); 

而我主要是這樣的:

enqueue(C,5); 
enqueue(C,1); 
enqueue(A,0); 
enqueue(G,7); 
enqueue(A,5); 
enqueue(G,3); 

我的輸出是這樣的:

C1 C5 G3 G7 A0 A5 

我可怎麼辦呢?

+0

如何字母排名?它只有C,G和A,C templatetypedef

+0

C> G> A @templatetypedef – user3668199

+0

'enqueue'是否是'n'的成員函數?還是它定義在別的地方? – templatetypedef

回答

0

我認爲你說明人物優先順序的順序與你的陳述一致。無論如何,你爲什麼使用隊列來存儲非FIFO順序的東西?你正在尋找的是一個鏈表。

這是我怎麼會去思考這個...

你有兩種類型的列表,一個是一組按優先順序字符的(你知道前手訂單 - 在我們的情況下,C> G> A)。因此,首先爲每個字符開始三個列表,每個列表指向另一個數字列表。

# Initially you will have: 
HEAD --> [ C: [] ] --> [ G: [] ] --> [ A: [] ] --> NULL 
enqueue(C,5); 
HEAD --> [ C: [5] ] --> [ G: [] ] --> [ A: [] ] --> NULL 
enqueue(C,1); 
HEAD --> [ C: [1, 5] ] --> [ G: [] ] --> [ A: [] ] --> NULL 
enqueue(A,0); 
HEAD --> [ C: [1, 5] ] --> [ G: [] ] --> [ A: [0] ] --> NULL 
enqueue(G,7); 
HEAD --> [ C: [1, 5] ] --> [ G: [7] ] --> [ A: [0] ] --> NULL 
enqueue(A,5); 
HEAD --> [ C: [1, 5] ] --> [ G: [7] ] --> [ A: [0, 5] ] --> NULL 
enqueue(G,3); 
HEAD --> [ C: [1, 5] ] --> [ G: [3, 7] ] --> [ A: [0, 5] ] --> NULL 

您還可以實現它首先通過各種數字的排序功能:

# Unsorted list 
stack -> {c,5} -> {c,1} -> {a,0} -> {g,7} -> {a,5} -> {g,3} -> NULL 

# Sort by numbers 
stack -> {a,0} -> {c,1} -> {g,3} -> {c,5} -> {a,5} -> {g,7} -> NULL 

# sort by your specific letter order, you would need to check 
# c > g > a etc 
stack -> {c,1} -> {c,5} -> {g,3} -> {g,7} -> {a,0} -> {a,5} -> NULL 
+0

排序的隊列是非常常見的東西:當然是http://en.wikipedia.org/wiki/Priority_queue – pmr

+0

!我曾(錯誤地?)認爲這是一個問題,要求實現入隊(本質上是一個prioQ),只是試圖在沒有真正指向源的情況下向該方向推送操作:) – sabhiram

+0

@sabhiram我必須使用enqueue排序 – user3668199