|
|
|
@@ -0,0 +1,41 @@ |
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
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; |
|
|
|
} |