Определить количество элементов списка, для которых сумма предыдущих элементов меньше суммы следующих за ним элементов + вывести эти элементы и суммы
У меня есть структура:
typedef struct SNum
{
int num;
SNum * next;
SNum * prev;
} TSNum;
TSNum * Start;
Я её заполняю рандомными числами с помощью функции. Потом с помощью меню выбираю операцию над этой структурой. Одна из них - определить количество элементов, для которых сумма предыдущих элементов меньше суммы следующих за ним элементов, потом вывести эти элементы и суммы с двух сторон на экран. Я написал эту функцию, но она не работает, сразу вылетает консоль при её вызове. Подскажите пожалуйста, где я допустил ошибку. Вот моя функция:
void sumElemCompar(TSNum * &Start)
{
int leftSum, rightSum;
TSNum * wp;
wp=Start;
while(wp!=NULL)
{
rightSum+=wp->num;
wp=wp->next;
}
wp=Start;
while(wp!=NULL)
{
leftSum+=wp->prev->num;
rightSum-=wp->num;
if(leftSum<rightSum)
{
cout <<"Элемент "<< wp->num << ": сумма слева - "
<< leftSum <<"меньше правой - "<< rightSum << endl;
}
}
wp=wp->next;
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Локальные переменные leftSum, rightSum не инициализированы нулями - это нормально?
Вот здесь ошибка:
leftSum+=wp->prev->num;
для первого элемент prev==null
Кажется, достаточно будет эту строку убрать, а после сравнения сделать
leftSum+=wp->num;