функция, которая подсчитывает нечетные элементы в списке с указателем запуска START - PullRequest
1 голос
/ 27 апреля 2019

Мне нужно посчитать нечетные числа в списке при запуске указателя запуска

struct elem {
    int key; 
    elem *next;

}
 *start = NULL;

// List Function 

void list() {
    if (start)
    {
        cout << "\nList";
        elem *p = start;
        while (p)
        {
            cout << p->key << "\t";
            p = p->next;
        }
    }
    else
    {
        cout << "\nEmpty list";
    }
}

// Добавить

void add(int n) {
    if (start==NULL || start ->key > n)
    {
        add_b(n);
    }
    else
    {
        elem *p = start;
        while (p->key <= n && p->next)
        {
            p = p->next;
    }
    add_e(n);

    }
}

// Функция драйвера

int main() {

    int d;

    do
    {
        cin >> d;
        if (d)
        {
            add(d), list();
        }
    } while (d);

    system("pause");
    return 0;
}

Я не знаю, где мне нужно начинать цикл for для подсчета нечетных чисел.

Пожалуйста, кто-нибудь, чтобы дать мне демо или что-то подобное, потому что я действительно не могу понять, как это сделать, и это будетбыть действительно полезным

Ответы [ 2 ]

2 голосов
/ 27 апреля 2019

Если я правильно понял, вам нужно написать рекурсивную функцию для списка, который считает нечетные числа в списке.

Рекурсивная функция может выглядеть следующим образом

unsigned int count_odds( struct elem *start )
{
    return start == NULL ? 0 : ( start->key & 1 ) + count_odds( start->next );
}

и называется как

unsigned int n = count_odds( start );

Вместо типа возвращаемого функцией unsigned int вы также можете использовать тип size_t, который лучше.

0 голосов
/ 27 апреля 2019

Псевдокод для подсчета нечетного значения

int count_odd(list)
{
    int count = 0;
    for (current_node = start_of_list until end_of_list)
    {
        if (current_node->value is odd)
            ++count;
    }

    return count;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...