//=========================================================
// File: HW_10d
// Programmer: Elaine Torrez
// Class: CMPR 121
//=========================================================
// Description:
// This program determines whether a word is
// a palindrome using list iterators.
//=========================================================

#include <iostream>
#include <list>
#include <string>

using namespace std;

int main()
{
    list<char> characterList;

    list<char>::iterator forwardIterator;
    list<char>::reverse_iterator reverseIterator;

    string userWord;

    bool isPalindrome;

    int index;

    cout << "Enter a word: ";
    cin >> userWord;

    for (index = 0; index < userWord.length(); index++)
    {
        characterList.push_back(userWord[index]);
    }

    isPalindrome = true;

    forwardIterator = characterList.begin();
    reverseIterator = characterList.rbegin();

    while (forwardIterator != characterList.end())
    {
        if (*forwardIterator != *reverseIterator)
        {
            isPalindrome = false;
            break;
        }

        forwardIterator++;
        reverseIterator++;
    }

    cout << endl;

    if (isPalindrome == true)
    {
        cout << userWord
             << " is a palindrome."
             << endl;
    }
    else
    {
        cout << userWord
             << " is NOT a palindrome."
             << endl;
    }

    return 0;
}