C++ 跟踪节点被访问的次数

C++ 跟踪节点被访问的次数,c++,doubly-linked-list,C++,Doubly Linked List,我研究这个话题已经有一段时间了。我还没有得出确切的结论 在双链接列表中,如何跟踪节点被访问的次数 例如: 假设我们输入几个节点,每个节点都有一个char类型的值 用户输入要访问的节点的值 用户输入:“b”、“b”、“c”、“b”、“a”、“a” 现在“b”已经访问了三次 现在,由于b是访问量最大的节点,您需要将该节点移动到前面 将节点移动到前端很容易,但我不知道如何跟踪节点 非常感谢您的帮助。您可以在节点中添加计数字段,如下所示:- struct node { char alpha; int c

我研究这个话题已经有一段时间了。我还没有得出确切的结论

在双链接列表中,如何跟踪节点被访问的次数

例如:

假设我们输入几个节点,每个节点都有一个char类型的值

用户输入要访问的节点的值

用户输入:“b”、“b”、“c”、“b”、“a”、“a”

现在“b”已经访问了三次

现在,由于b是访问量最大的节点,您需要将该节点移动到前面

将节点移动到前端很容易,但我不知道如何跟踪节点


非常感谢您的帮助。

您可以在节点中添加计数字段,如下所示:-

struct node
{
char alpha;
int count;
struct node *next;
}
另外,定义一个构造函数,将count设置为0。您必须不断检查计数,以便在每次输入时对链表进行排序

可以肯定的是,这将是非常糟糕的数据结构选择

根据评论编辑:-


尝试用
std::priority\u queue
映射它,其中priority将是单词的计数。选择max heap来实现这一点。或者,为了简单起见,您也可以使用
std::multimap
(int表示计数,string表示单词)。

您在这里试图解决的更大问题是什么?你确定双链表是正确的数据结构吗?你如何记录在现实世界中使用的频率?你会添加一个库存跟踪系统…@acushner嗯,是的,我肯定,只是因为我必须使用它。我正在做的是做一个拼写检查程序。用户输入他们的句子,如果拼写错误,我的程序会更正它。我正在努力使访问量最大的单词被发送到前台,以便更快地访问。或多或少是一个自组织的双链接列表。我知道,这是一个糟糕的选择。但我不得不使用双链接列表。我知道你要做什么,这肯定会有帮助。非常感谢。唯一让我困惑的是打电话给伯爵。我知道您会将每个节点的计数初始化为0。但是,当你每次增加访问次数时,你会说Node->count++;这合法吗?无论何时创建一个新节点,只要将count设置为1,无论何时访问increment,它都是值。很抱歉再次打扰您,但您如何增加它的值?这是我唯一不明白的事情。在您最初看到我的上述问题后,我可能已对其进行了编辑,我深表歉意。谢谢!这是有道理的。