#include struct ListNode { int val; struct ListNode *next; }; struct ListNode* middleNode(struct ListNode*); struct ListNode* middleNode(struct ListNode* head){ struct ListNode* ind = head; struct ListNode* middle = head; int on = 0; while (ind != NULL) { ind = ind->next; if (on == 0) { on = 1; } else { on = 0; middle = middle->next; } } return middle; } int main() { printf("Expected: [4, 5, 6]\n"); printf("Got:"); struct ListNode l6 = { 6, NULL }; struct ListNode l5 = { 5, &l6 }; struct ListNode l4 = { 4, &l5 }; struct ListNode l3 = { 3, &l4 }; struct ListNode l2 = { 2, &l3 }; struct ListNode linkedList = { 1, &l2 }; struct ListNode* middle = middleNode(&linkedList); while (middle != NULL) { printf(" %d ", middle->val); middle = middle->next; } printf("\n"); return 0; }