C从整数列表中获取模式

Mat*_*att 3 c

我需要编写一个程序来查找模式.或者最多出现一个整数或整数.所以,

1,2,3,4,1,10,4,23,12,4,1将具有1和4的模式.

我不确定应该使用哪种算法.我很难想到能够奏效的东西.

我正在考虑某种频率表,也许我可以通过数组,然后通过创建一个链表.如果链接不包含该值,则将其添加到链接,如果是,则将值加1.

所以,如果我从上面有同样的事情.循环通过1,2,3,4,1,10,4,23,12,4,1

然后list为空,所以添加number = 1和value = 1的节点.2不存在,所以添加number = 2和value = 1的节点,依此类推.到1和1已经存在,所以值= 2现在.

我必须循环遍历数组,然后每次循环遍历链表以找到该值.

完成后,请浏览链接列表并创建一个新的链接列表来保存模式.所以我将头设置为第一个元素1.然后我浏览包含出现的链接列表并比较值.如果当前节点的出现>当前最高,则我将头设置为该节点.如果它=到最高,那么我将节点添加到模式链表.

完成后,我遍历模式列表并打印值.

不确定这是否有效.有没有人看到这个有什么问题?有更简单的方法吗?我也在考虑哈希表,但不确定如何在C中做到这一点.

谢谢.

Pau*_*icz 5

如果可以将整个整数列表保留在内存中,则可以先对列表进行排序,这将使重复的值彼此相邻.然后,您可以对排序列表执行单次传递以查找模式.这样,您只需要跟踪到目前为止看到的模式的最佳候选者,以及到目前为止看到当前值的次数.