#include <stdlib.h>
using namespace std;
typedef struct node {
int val;
struct node * next;
} node_t;
void pushOnTheEnd(node_t * head, int val) {
node_t * current = head;
while (current->next != NULL) {
current = current->next;
}
/* now we can add a new variable */
current->next = (node_t*)malloc(sizeof(node_t));
current->next->val = val;
current->next->next = NULL;
}
void pushOnTheBeginning(node_t ** head, int val) {
node_t * new_node;
new_node = (node_t*)malloc(sizeof(node_t));
new_node->val = val;
new_node->next = *head;
*head = new_node;
}
int numberOfEvenElements(node_t *head){
if(!head) {
return 0;
}
else if((head->val)%2==0) {
return 1 + numberOfEvenElements(head->next);
}
else{
return numberOfEvenElements(head->next);
}
}
int numberOfEvenElements2(node_t *head)
{
uint evenElementsCount = 0;
if (head == NULL) {
return evenElementsCount;
}
if (head->val % 2 == 0) {
++evenElementsCount;
}
return evenElementsCount + numberOfEvenElements(head->next);
}
int main(){
int number;
node_t*new_node;
node_t * head = NULL;
head = (node_t*)malloc(sizeof(node_t));
if (head == NULL) {
return 1;
}
head->val = 1;
head->next = NULL;
pushOnTheEnd(head,5);
pushOnTheBeginning(&head,9);
pushOnTheEnd(head,7);
pushOnTheEnd(head,2);
pushOnTheEnd(head,8);
pushOnTheBeginning(&head,4);
pushOnTheEnd(head,118);
number=numberOfEvenElements2(head);
printf("\nNumber of even elements: %d",number);
return 0;
}
Output jest dobry, obie wersje funkcji działają (przerabiałem Twoją wklejkę):
Number of even elements: 4