#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))
{
}
}
}
//-----------------------------------------------------------------------------
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;
while (i--)
{
Push
(&list
, rand() % 10 + 1); }
Print(list, AllElements);
printf("multiplication = %d\n", GetMultiplication
(list
));
Print(list, OnlyOddElements);
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KIAp0eXBlZGVmIHN0cnVjdCBfVE5vZGUKewogICAgaW50IHZhbHVlOwogICAgc3RydWN0IF9UTm9kZSogbmV4dDsKfSAgIFROb2RlOwogCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVE5vZGUqIFB1c2goVE5vZGUqKiBsaXN0LCBpbnQgdmFsdWUpCnsKICAgIFROb2RlKiBub2RlID0gbWFsbG9jKHNpemVvZihUTm9kZSkpOwogICAgbm9kZS0+dmFsdWUgPSB2YWx1ZTsKICAgIG5vZGUtPm5leHQgPSAqbGlzdDsKIAogICAgKmxpc3QgPSBub2RlOwogCiAgICByZXR1cm4gKmxpc3Q7Cn0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppbnQgQWxsRWxlbWVudHMoaW50IGkpCnsKICAgIHJldHVybiAxOwp9Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaW50IE9ubHlPZGRFbGVtZW50cyhpbnQgaSkKewogICAgcmV0dXJuIGkgJiAxOwp9Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kdm9pZCBQcmludChjb25zdCBUTm9kZSogbGlzdCwgaW50ICgqRnVuYykoaW50KSkKewogICAgaW50IGkgPSAwOwogICAgZm9yICg7IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KQogICAgewogICAgICAgIGlmIChGdW5jKCsraSkpCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIiVkICIsIGxpc3QtPnZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppbnQgR2V0TXVsdGlwbGljYXRpb24oY29uc3QgVE5vZGUqIGxpc3QpCnsKICAgIGludCByZXN1bHQgPSAxOwogCiAgICBmb3IgKDsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpCiAgICB7CiAgICAgICAgcmVzdWx0ICo9IGxpc3QtPnZhbHVlOwogICAgfQogCiAgICByZXR1cm4gcmVzdWx0Owp9Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7CiAgICBUTm9kZSogbGlzdCA9IE5VTEw7CiAgICBpbnQgaSA9IDEwOwogCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKIAogICAgd2hpbGUgKGktLSkKICAgIHsKICAgICAgICBQdXNoKCZsaXN0LCByYW5kKCkgJSAxMCArIDEpOwogICAgfQogCiAgICBQcmludChsaXN0LCBBbGxFbGVtZW50cyk7CiAKICAgIHByaW50ZigibXVsdGlwbGljYXRpb24gPSAlZFxuIiwgR2V0TXVsdGlwbGljYXRpb24obGlzdCkpOwogCiAgICBQcmludChsaXN0LCBPbmx5T2RkRWxlbWVudHMpOwogCiAgICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9