Мне нужно написать программу, чтобы найти режим. Или наибольшее вхождение целого числа или целых чисел.
Таким образом,
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
Тогда список пуст, поэтому добавьте узел с номером = 1 и значением = 1.
2 не существует, поэтому добавьте узел с номером = 2 и значением = 1 и так далее.
Получить до 1 и 1 уже существует, поэтому значение = 2 сейчас.
Мне нужно было бы перебирать массив, а затем каждый раз перебирать связанный список, чтобы найти это значение.
Как только я закончу, просмотрите связанный список и создайте новый связанный список, который будет содержать режимы. Итак, я установил заголовок для первого элемента, который равен 1. Затем я просматриваю связанный список, содержащий события, и сравниваю значения. Если вхождения текущего узла> текущего максимума, тогда я устанавливаю голову этому узлу. Если его = к самому высокому, тогда я добавляю узел в связанный список режимов.
Как только я закончу, я перебираю список режимов и печатаю значения.
Не уверен, что это сработает. Кто-нибудь видит что-то не так с этим? Есть ли более простой способ сделать это? Я тоже думал о хеш-таблице, но не совсем уверен, как это сделать в C.
Спасибо.