我一直在研究这个话题。我还没有得出一个可靠的结论。
您如何跟踪在双向链接列表中访问节点的次数?
例如:
假设我们输入了几个节点,每个节点都保存了char类型的值。
用户键入要访问的节点的值。
用户输入:' b',' b',' c' ' b',' a','一个'
现在' b'已被访问过三次。
现在,由于b是访问量最大的节点,因此您希望将该节点移到前面。
将节点移到前面很容易,但我不知道如何跟踪节点。
非常感谢任何帮助。
答案 0 :(得分:3)
您可以在节点中添加计数字段,如下所示: -
struct node
{
char alpha;
int count;
struct node *next;
}
此外,定义一个构造函数,您将count设置为0.您必须不断检查计数以在每个输入处对链接列表进行排序。
有一点可以肯定的是,这将是非常糟糕的数据结构选择。
在回应评论时编辑: -
尝试将其映射到std::priority_queue
,其中优先级将是单词的计数。选择max-heap来实现这一点。或者你也可以使用std::multimap<int, string>
(int为count,字符串是你的话)。