Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2018, 18:44   #1
Yoooy
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 13
По умолчанию задача по спискам поделитесь соображениями

Имеется односвязный список, содержащий числа. По нему построить второй список такой же длинны, как и исходный, каждый
i-ый элемент которого будет содержать сумму элементов исходного списка начиная с первого и вплоть до i-го
Вот что удалось сделать:
Код:
// создаем свой тип данных для односвязного списка
typedef struct List
{
    int info;
    struct List* next;
} List;
 
// указатели на первый и последний элемент списка
List *First, *Last;
 
// функция добавления нового элемента в конец списка
void push(int inf)
{
    struct List* el;
 
    // динамически выделяем память под очередной элемент списка
    el = (struct List*)malloc(sizeof(struct List));
    if (el == NULL)
    {
        printf("Не удалось выделить память под элемент списка.\n");
        return;
    }
 
    el->info = inf;
    el->next = NULL;
 
    if (First == NULL)
        First = Last = el;
    else
    {
        Last->next = el;
        Last = Last->next;
    }
}
 
int main(void)
{
    int inf, sum;
    List *el, *tmp;
 
    setlocale(LC_ALL, "Russian");
 
    First = Last = NULL;
 
    printf("Введите элементы списка (окончание ввода -- любой символ, кроме цифры):\n");
    while (scanf("%d", &inf) != 0)
        push(inf);
 
    sum = 0;
 
    // перебираем все элементы списка (с первого по последний) и считаем сумму положительных
    for (el = First; el != NULL; el = el->next)
        if (el->info > 0)
            sum += el->info;
 
    printf("Сумма положительных элементов списка равна %d.\n", sum);
 
    // освобождение выделенной под список памяти
    for (el = First; el != NULL;)
    {
        tmp = el;
        el = el->next;
        free(tmp);
    }
 
    return 0;
}
Yoooy вне форума Ответить с цитированием
Старый 23.11.2018, 18:46   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так а вопрос-то в чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.11.2018, 19:01   #3
Yoooy
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 13
По умолчанию

вопрос в том, что я не могу создать второй список каждый
i-ый элемент которого будет содержать сумму элементов исходного списка начиная с первого и вплоть до i-го
Yoooy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Задача по спискам, срочно. Mikdon Фриланс 2 10.11.2016 18:17
Стек. Лабиринт. Поделитесь вашими соображениями Nickolay0512 Общие вопросы C/C++ 5 07.10.2014 21:50
обращение к спискам в sharepoint Dimastiks ASP.NET 0 06.08.2012 11:32
блок-схема по спискам bwitcher Помощь студентам 0 30.10.2011 17:05
Поделитесь соображениями: сваливается база Access2002, симптомы: Leo_G Microsoft Office Access 0 22.04.2009 13:12