Data Structure C++

#include 
#include 
#include 
#include 
using namespace std;
int main()
{
  list sentence;
  list phrase;
  list::iterator p;
  
  string s1[] = {"A", "B", ""};
  string s2[] = {"C", "D", ""};
  string s3[] = {"E", "F", "G.", ""};
  string s4[] = {"A", "C,", "E", "G", ""};
  int i;
  for(i = 0; s1[ i ] != ""; i++)
    sentence.push_back(s1[i]);
  for(i = 0; s2[ i ] != ""; i++)
    phrase.push_back(s2[ i ]);
  cout << "Original sentence:\n";
  p = sentence.begin();
  while(p != sentence.end())
    cout << *p++ << " ";
  cout << endl;
  sentence.splice(sentence.begin(), phrase);
  cout << "Sentence after splicing at the front:\n";
  p = sentence.begin();
  while(p != sentence.end())
    cout << *p++ << " ";
  cout << endl;
  for(i = 0; s3[ i ] != ""; i++)
    phrase.push_back(s3[ i ]);
  sentence.splice(sentence.end(), phrase);
  cout << "Sentence after splicing at the end:\n";
  p = sentence.begin();
  while(p != sentence.end())
    cout << *p++ << " ";
  cout << endl;
  for(i = 0; s4[ i ] != ""; i++)
    phrase.push_back(s4[ i ]);
  p = find(sentence.begin(), sentence.end(), "or");
  sentence.splice(p, phrase);
  cout << "Sentence after splicing in the middle:\n";
  p = sentence.begin();
  while(p != sentence.end())
    cout << *p++ << " ";
  return 0;
}