#include using namespace std; class cNode { private: cNode *m_pPreviousNode; cNode *m_pNextNode; char m_cLetter; public: cNode(); ~cNode(); void setLetter(char cLetter); void displayLetter(); cNode *addNode(cNode *pPreviousNode); cNode *getPreviousNode(); cNode *getNextNode(); cNode *deleteNode(); }; cNode *deleteList(); cNode::cNode() { m_pPreviousNode = NULL; m_pNextNode = NULL; } cNode::~cNode() { m_pPreviousNode = NULL; m_pNextNode = NULL; } void cNode::setLetter(char cLetter) { m_cLetter = cLetter; } void cNode::displayLetter() { cout << m_cLetter; } cNode *cNode::getPreviousNode() { return m_pPreviousNode; } cNode *cNode::getNextNode() { return m_pNextNode; } cNode *cNode::addNode(cNode *pHead) { if(pHead == NULL) { m_pNextNode = NULL; } else { m_pNextNode = pHead; } return pHead; } cNode *cNode::deleteNode() { cNode *pNewHead; pNewHead = m_pPreviousNode; m_pPreviousNode = NULL; return pNewHead; } void traverseList(cNode *pHead) { cNode *pPreviousNode = pHead; while(pPreviousNode != NULL) { pPreviousNode->displayLetter(); pPreviousNode = pPreviousNode->getPreviousNode(); } } void reverseList(cNode *pHead) { while(pHead != NULL) { pHead->displayLetter(); pHead = pHead->getNextNode(); } } void deleteList(cNode *pHead) { cNode *pOldHead; while(pHead != NULL) { pOldHead = pHead; pHead = pHead->deleteNode(); delete pOldHead; } } void main() { cNode *pHead = NULL; cNode *tail; char szUserString[80] = {0}, *pChar; cout << "Please enter your name: "; cin.getline(szUserString,79); pChar = szUserString; while(*pChar != '\0') { cNode *pCurrentObject = new cNode; pCurrentObject->setLetter(*pChar); if(pHead == NULL) { pHead = tail = pCurrentObject; } else { tail = tail->addNode(pCurrentObject); } pChar++; } //traverseList(pHead); reverseList(pHead); cout << endl; deleteList(pHead); }