Создание линейного односвязного списка - 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;
}