#include <iostream> #include <string> using namespace std; struct Link { string data; Link * next; Link(string d, Link * n); }; struct List { Link * first; List(); void insert(string s); void printall(); void split(List & x); }; Link::Link(string d, Link * n) { data = d; next = n; } List::List() { first = NULL; } void List::insert(string s) { first = new Link(s, first); } void List::printall() { Link * ptr = first; while (ptr != NULL) { cout << ptr->data << " "; ptr = ptr->next; } cout << "\n"; } void List::split(List & x) { Link * ptr1 = first, * ptr2 = first, * prev2 = NULL; while (true) { if (ptr1 == NULL) break; ptr1 = ptr1->next; if (ptr2 == NULL) break; prev2 = ptr2; ptr2 = ptr2->next; if (ptr1 == NULL) break; ptr1 = ptr1->next; } if (prev2 == NULL) x.first = NULL; else { prev2->next = NULL; x.first = ptr2; } } int main() { List a, b; while (true) { string s; cin >> s; if (s == "****") break; a.insert(s); } a.split(b); cout << "One half: "; a.printall(); cout << "Other half: "; b.printall(); }