Please send questions to
st10@humboldt.edu .
//---------------------------------------------------------------
// File: test_divide.cpp
// Name: Sharon M. Tuttle
// last modified: 3-23-05
//
// Purpose: tester for function divide
//--------------------------------------------------------------
#include <iostream>
#include "divide.h"
#include "node.h"
using namespace std;
int main()
{
// set-up declarations
// need to set up the linked list to be divided...!
int value_array[6] = {3, 6, 2, 9, 1, 5};
node *myHead;
node *myTail;
node *temp;
node *result;
myHead = new node(value_array[0]);
myTail = myHead;
for (int i = 1; i < 6; i++)
{
myTail->set_next(new node(value_array[i]));
myTail = myTail->get_next();
}
// tests and associated cout's
temp = myHead;
cout << "BEFORE divide call #1: " << endl;
cout << "should see: 3 6 2 9 1 5" << endl;
cout << "do see : ";
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
result = divide(myHead);
cout << "AFTER divide call #1: " << endl;
cout << "should see: 3 6 2" << endl;
cout << "do see : ";
temp = myHead;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
cout << "should see: 9 1 5" << endl;
cout << "do see : ";
temp = result;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
//------------ SET UP for 2nd divide call-----------------
while (result != NULL)
{
temp = result->get_next();
delete result;
result = temp;
}
myHead = new node(value_array[0]);
myTail = myHead;
// this example list is 1 shorter...
for (int i = 1; i < 5; i++)
{
myTail->set_next(new node(value_array[i]));
myTail = myTail->get_next();
}
temp = myHead;
cout << "BEFORE divide call #2: " << endl;
cout << "should see: 3 6 2 9 1" << endl;
cout << "do see : ";
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
result = divide(myHead);
cout << "AFTER divide call #2: " << endl;
cout << "should see: 3 6 2" << endl;
cout << "do see : ";
temp = myHead;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
cout << "should see: 9 1" << endl;
cout << "do see : ";
temp = result;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
//-----set up for divide call #3----------------------------
while (result != NULL)
{
temp = result->get_next();
delete result;
result = temp;
}
myHead = new node(value_array[0]);
myTail = myHead;
// this example list is only 2 items long...
for (int i = 1; i < 2; i++)
{
myTail->set_next(new node(value_array[i]));
myTail = myTail->get_next();
}
temp = myHead;
cout << "BEFORE divide call #3: " << endl;
cout << "should see: 3 6" << endl;
cout << "do see : ";
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
result = divide(myHead);
cout << "AFTER divide call #3: " << endl;
cout << "should see: 3" << endl;
cout << "do see : ";
temp = myHead;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
cout << "should see: 6" << endl;
cout << "do see : ";
temp = result;
while (temp != NULL)
{
cout << temp->get_data() << " ";
temp = temp->get_next();
}
cout << endl;
cout << endl;
return EXIT_SUCCESS;
}