#include #include #include #include #include struct node { struct node *next; int data; }; // Given two linked lists, // count the number of even numbers in both linked lists // and return the difference (should be the absolute value). // For example: // 2->1->4->X // 1->2->3->4->100->X // Would print out // 1 int even_diff(struct node *head1, struct node *head2) { // PUT YOUR CODE HERE // count the number of even values in head1 int count1 = 0; struct node *tmp1 = head1; while (tmp1 != NULL) { if (tmp1->data % 2 == 0) { count1++; } tmp1 = tmp1->next; } int count2 = 0; struct node *tmp2 = head2; while (tmp2 != NULL) { if (tmp2->data % 2 == 0) { count2++; } tmp2 = tmp2->next; } return abs (count1 - count2); // if (count1 > count2) { // return count1 - count2; // } else { // return count2 - count1; // } } struct node *strings_to_list(int len, char *strings[]); // DO NOT CHANGE THIS MAIN FUNCTION int main(int argc, char *argv[]) { // create two linked lists from command line arguments int dash_arg = argc - 1; while (dash_arg > 0 && strcmp(argv[dash_arg], "-") != 0) { dash_arg = dash_arg - 1; } struct node *head1 = strings_to_list(dash_arg - 1, &argv[1]); struct node *head2 = strings_to_list(argc - dash_arg - 1, &argv[dash_arg + 1]); printf("%d\n", even_diff(head1, head2)); return 0; } // DO NOT CHANGE THIS FUNCTION // create linked list from array of strings struct node *strings_to_list(int len, char *strings[]) { struct node *head = NULL; for (int i = len - 1; i >= 0; i = i - 1) { struct node *n = malloc(sizeof (struct node)); assert(n != NULL); n->next = head; n->data = atoi(strings[i]); head = n; } return head; }