Method 1: Traverse linked list using two pointers. Move first pointer by one and second pointer by two, when second pointer reaches to the end of the list, then first pointer will reach to the middle of the list. Implementation in C: #include<stdio.h> #include<stdlib.h> struct node { int data; struct node* next; }; int main() { struct node* head = NULL; push(&head,1); push(&head,2); push(&head,3); push(&head,4); push(&head,5); push(&head,6); push(&head,7); printMiddle(head); return 0; } void push(struct node** ref, int newData) { struct node* newNode = (struct node*)malloc(sizeof(struct node)); newNode->data = newData; newNode->next = (*ref); (*ref) = newNode; } void printMiddle(struct node...