#include <iostream>
using namespace std;
int main ( void )
{
cList<int> list;
list.PushFront(7);
list.PushFront(6);
list.PushFront(5);
list.PushBack(8);
list.PushBack(5);
cout << "\nOriginal list:";
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\nReversing...";
list.Reverse();
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\nReversing again...";
list.Reverse();
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\nPerforming traversal and inserting 9 after 8";
for ( cList<int>::Element* iter = list.GetStart(); iter; iter = iter->GetNext() )
{
cout << "\nData -> " << iter->data;
if ( iter->data == 8 )
{
cList<int>::Element* x = new cList<int>::Element;
x->data = 9;
list.Insert( x, iter->GetNext() );
}
}
cout << "\n\nPerforming reverse traversal:";
for ( cList<int>::Element* iter = list.GetEnd(); iter; iter = iter->GetPrev() )
{
cout << "\nData -> " << iter->data;
}
cout << "\n\nPopping front...";
list.PopFront();
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\nReadding 5...";
list.PushFront(5);
list.Print();
cout << endl << endl;
cout << "\nPopping back...";
list.PopBack();
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\nReadding 5...";
list.PushBack(5);
list.Print();
cout << endl << endl;
cout << "\nDeleting 7...\n\n";
list.Delete(7);
cout << "\nNew list:";
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\n\nErasing 5...\n\n";
list.Erase(5);
cout << "\nNew list:";
list.Print();
cout << "\nSize: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cout << "\n\nClearing list...\n\n";
list.Clear();
cout << "Size: " << list.Size() << endl;
cout << "Empty: " << (list.Empty() ? "Yes" : "No") << endl;
cin.get();
return EXIT_SUCCESS;
}