我一直在研究這個主題一段時間。我還沒有得出一個堅實的結論。跟蹤一個節點被訪問了多少次
您將如何跟蹤一個節點在雙向鏈表中訪問的次數?
例如:
比方說,我們進入了幾個節點,每個節點擁有char類型的值。
用戶鍵入值到他們想要訪問的節點。
用戶輸入:'b','b','c''b','a','a'。
現在'b'已被訪問過三次。
現在,由於b是訪問次數最多的節點,因此您希望將該節點移到前面。將節點移到前面很容易,但我不知道如何跟蹤節點。
任何幫助將不勝感激。
我一直在研究這個主題一段時間。我還沒有得出一個堅實的結論。跟蹤一個節點被訪問了多少次
您將如何跟蹤一個節點在雙向鏈表中訪問的次數?
例如:
比方說,我們進入了幾個節點,每個節點擁有char類型的值。
用戶鍵入值到他們想要訪問的節點。
用戶輸入:'b','b','c''b','a','a'。
現在'b'已被訪問過三次。
現在,由於b是訪問次數最多的節點,因此您希望將該節點移到前面。將節點移到前面很容易,但我不知道如何跟蹤節點。
任何幫助將不勝感激。
您可以在節點處添加數區域如下: -
struct node
{
char alpha;
int count;
struct node *next;
}
此外,定義構造函數,你會設置數爲0。你必須爲計數連續檢查在每一個排序鏈表輸入。
有一點可以肯定的是,這對於數據結構來說是非常糟糕的選擇。
編輯的迴應註釋: -
嘗試映射它std::priority_queue
,其中將優先字的計數。選擇最大堆實現這一點。或者,爲簡單起見,您還可以使用std::multimap<int, string>
(int爲count和string作爲您的詞)。
我知道,這是一個糟糕的選擇。儘管我被迫使用雙向鏈表。我明白你要去哪裏,這絕對有幫助。非常感謝你。 – MipsMoreLikeWhips 2014-10-16 15:51:36
@MipsMoreLikeWhips歡迎隊友 – ravi 2014-10-16 16:01:27
唯一讓我困惑的就是打電話給伯爵。我知道你將初始化每個節點的計數爲0。但是,當你每次增加訪問時,你會說Node-> count ++;這是合法的嗎? – MipsMoreLikeWhips 2014-10-16 16:05:39
你在這裏試圖解決的大問題是什麼?你確定一個雙向鏈表是否是正確的數據結構? – acushner 2014-10-16 15:46:20
您將如何跟蹤在現實世界中使用某種東西的頻率?你會添加一個庫存跟蹤系統... – 2014-10-16 15:46:35
@ acushner嗯,是的,我相信只是因爲我必須使用它。我正在做的是製作一個拼寫檢查程序。用戶輸入他們的句子,如果拼寫錯誤,我的程序會更正它。我試圖讓訪問量最大的單詞被髮送到前面以便更快訪問。或多或少是一個自組織的雙向鏈表。 – MipsMoreLikeWhips 2014-10-16 15:49:34