Создание линейного односвязного списка - C (СИ)
Формулировка задачи:
-найти произведение элементов списка.
-вывести на экран нечетные элементы списка.
Решение задачи: «Создание линейного односвязного списка»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- typedef struct _TNode
- {
- int value;
- struct _TNode* next;
- } TNode;
- //-----------------------------------------------------------------------------
- TNode* Push(TNode** list, int value)
- {
- TNode* node = malloc(sizeof(TNode));
- node->value = value;
- node->next = *list;
- *list = node;
- return *list;
- }
- //-----------------------------------------------------------------------------
- int AllElements(int i)
- {
- return 1;
- }
- //-----------------------------------------------------------------------------
- int OnlyOddElements(int i)
- {
- return i & 1;
- }
- //-----------------------------------------------------------------------------
- void Print(const TNode* list, int (*Func)(int))
- {
- int i = 0;
- for (; list; list = list->next)
- {
- if (Func(++i))
- {
- printf("%d ", list->value);
- }
- }
- printf("\n");
- }
- //-----------------------------------------------------------------------------
- int GetMultiplication(const TNode* list)
- {
- int result = 1;
- for (; list; list = list->next)
- {
- result *= list->value;
- }
- return result;
- }
- //-----------------------------------------------------------------------------
- int main(int argc, char* argv[])
- {
- TNode* list = NULL;
- int i = 10;
- srand(time(NULL));
- while (i--)
- {
- Push(&list, rand() % 10 + 1);
- }
- Print(list, AllElements);
- printf("multiplication = %d\n", GetMultiplication(list));
- Print(list, OnlyOddElements);
- return EXIT_SUCCESS;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д