
Patrick B. answered 08/08/21
Math and computer tutor/teacher
int main()
{
int iNum,iNum1,iNum2, count1,count2;
UnsortedType<int> list1;
UnsortedType<int> list2;
UnsortedType<int> list;
count1=count2=-1;
while (count1<0)
{
cout << "How many in the first list? :>";
cin >> count1;
}
for (int iLoop=0; iLoop<count1; iLoop++)
{
cout << "Please input data item # " << (iLoop+1) << " of " << count1 << " :>";
cin >> iNum;
list1.InsertItem(iNum);
}
while (count2<0)
{
cout << "How many in the 2nd list? :>";
cin >> count2;
}
for (int iLoop=0; iLoop<count2; iLoop++)
{
cout << "Please input data item # " << (iLoop+1) << " of " << count2 << " :>";
cin >> iNum;
list2.InsertItem(iNum);
}
cout << "Merging...." << endl;
list1.ResetList(); list2.ResetList();
list1.GetNextItem(iNum1);
list2.GetNextItem(iNum2);
while (count1>0 && count2>0)
{
cout << "iNum1 = " << iNum1 << " and iNum2= " << iNum2 << endl;
if (iNum1>iNum2)
{
list.InsertItem(iNum1);
count1--;
if (count1>0)
{
list1.GetNextItem(iNum1);
}
}
else
{
list.InsertItem(iNum2);
count2--;
if (count2>0)
{
list2.GetNextItem(iNum2);
}
}
}
if (count1==0)
{
cout << "list1 empties first ...." << endl;
while (count2>0)
{
list.InsertItem(iNum2);
count2--;
if (count2>0)
{
list2.GetNextItem(iNum2);
}
}
}
else
{
cout << "list2 empties first...." << endl;
while (count1>0)
{
list.InsertItem(iNum1);
count1--;
if (count1>0)
{
list1.GetNextItem(iNum1);
}
}
}
cout << "merge complete..." << endl;
list.ResetList();
int N = list.LengthIs() ;
list.GetNextItem(iNum);
for (int iLoop=0; iLoop<N; iLoop++)
{
cout << iNum << endl;
list.GetNextItem(iNum);
}
}