Как реализовать пропуск второго эл-та пары, если он не рядом стоит?

112
25 января 2020, 21:50

Нужно написать код, который будет искать количество пар одинаковых элементов, чтоб их считало только один раз

Пример: [1, 2, 1, 1] - "Одна пара одинаковых эл-тов"

Вот мой код, который я написал (использую обычный односвязный список):

void List::Check(int quan)
{
    Node* tmp = Head, *tmp_1 = tmp;
    bool flag = false;
    int counter = 0;
    for (int i = 0; i < quan - 1; i++)
    {
        if (flag)
        {
            flag = false;
            tmp = tmp->next;
            continue;
        }
        flag = false;
        tmp_1 = tmp->next;
        for (int j = i + 1; j < quan; j++)
        {
            if (tmp->inf == tmp_1->inf)
            {
                counter++;
                flag = true;
            }
            if (flag) { break; }
            tmp_1 = tmp_1->next;
        }

        tmp = tmp->next;
        if (flag) { continue; }
    }
    switch (counter)
    {
    case 0:
        cout << "The list doesn't have the same values." << endl;
        break;
    case 1:
        cout << "The list has 1 pair of the same values." << endl;
        break;
    default:
        cout << "The list has " << counter << " pairs of the same values." << endl;
        break;
    }
}

Но в нем есть проблема: не считает, если есть непарное число эл-тов и они разбиты.

Пример тот же: [1, 2, 1, 1]

Когда находим первую пару [1, 2, 1, 1], то как реализовать пропуск второго эл-та пары, если он не рядом стоит ? Можно объяснить на основе массива, я не могу придумать, как это сделать, а в интернетах ничего не нарыл(

READ ALSO
Не работает функция подсчета слов в строке при работе с файлом

Не работает функция подсчета слов в строке при работе с файлом

Необходимо посчитать количество слов в каждой строке для дальнейших действийФункция работает с обычной строкой, а вот при передаче ей буфера,...

110
Что сделать чтобы в конструкторе не было много параметров

Что сделать чтобы в конструкторе не было много параметров

Всем привет! Есть такой конструктор который считывает информацию о квартире:

135
Как скопировать строку из одного метода в другой

Как скопировать строку из одного метода в другой

У меня есть два класса, один из которых mainВ последнем хранится переменная Name

153