2014-10-16 62 views
1

我一直在研究這個主題一段時間。我還沒有得出一個堅實的結論。跟蹤一個節點被訪問了多少次

您將如何跟蹤一個節點在雙向鏈表中訪問的次數?

例如:

比方說,我們進入了幾個節點,每個節點擁有char類型的值。

用戶鍵入值到他們想要訪問的節點。

用戶輸入:'b','b','c''b','a','a'。

現在'b'已被訪問過三次。

現在,由於b是訪問次數最多的節點,因此您希望將該節點移到前面。將節點移到前面很容易,但我不知道如何跟蹤節點。

任何幫助將不勝感激。

+0

你在這裏試圖解決的大問題是什麼?你確定一個雙向鏈表是否是正確的數據結構? – acushner 2014-10-16 15:46:20

+0

您將如何跟蹤在現實世界中使用某種東西的頻率?你會添加一個庫存跟蹤系統... – 2014-10-16 15:46:35

+0

@ acushner嗯,是的,我相信只是因爲我必須使用它。我正在做的是製作一個拼寫檢查程序。用戶輸入他們的句子,如果拼寫錯誤,我的程序會更正它。我試圖讓訪問量最大的單詞被髮送到前面以便更快訪問。或多或少是一個自組織的雙向鏈表。 – MipsMoreLikeWhips 2014-10-16 15:49:34

回答

3

您可以在節點處添加數區域如下: -

struct node 
{ 
char alpha; 
int count; 
struct node *next; 
} 

此外,定義構造函數,你會設置數爲0。你必須爲計數連續檢查在每一個排序鏈表輸入。

有一點可以肯定的是,這對於數據結構來說是非常糟糕的選擇。

編輯的迴應註釋: -

嘗試映射它std::priority_queue,其中將優先字的計數。選擇最大堆實現這一點。或者,爲簡單起見,您還可以使用std::multimap<int, string>(int爲count和string作爲您的詞)。

+0

我知道,這是一個糟糕的選擇。儘管我被迫使用雙向鏈表。我明白你要去哪裏,這絕對有幫助。非常感謝你。 – MipsMoreLikeWhips 2014-10-16 15:51:36

+1

@MipsMoreLikeWhips歡迎隊友 – ravi 2014-10-16 16:01:27

+0

唯一讓我困惑的就是打電話給伯爵。我知道你將初始化每個節點的計數爲0。但是,當你每次增加訪問時,你會說Node-> count ++;這是合法的嗎? – MipsMoreLikeWhips 2014-10-16 16:05:39