////////////////////////////////////////////////////////////////////// // Specification file for the IntList class // // #include "bool.h" const int MAX_LENGTH = 500; // The max size of the lists class IntList { public: // constructor IntList(void); Boolean ReadData(const char filename[]); void LinearSearch(int item, int& index, Boolean& found); void LinearSearchOrd(int item, int& index, Boolean& found) const; void BinarySearch(int item, int& index, Boolean& found) const; void Sort(void); void DeleteOne(int item); void DeleteAll(int item); void Display(void) const; int GetLength(void) const; private: int length; // the number of elements in the list int list[MAX_LENGTH]; // the array of elements }Implementation
////////////////////////////////////////////////////////////////////// // Partial implementation file for the IntList class // // #include "intlist.h" #include <fstream.h> #include <iostream.h> #include <iomanip.h> IntList::IntList(void) { length = 0; } int IntList::GetLength(void) const { return length; } Boolean IntList::ReadData(const char filename[]) { ifstream inFile; length = 0; inFile.open(filename, ios::in); if (!inFile) { cout << "Can't open data file: " << filename << endl; return FALSE; } int count = 0; int value; inFile >> value; while (!inFile.eof() && count < MAX_LENGTH) { list[count] = value; count++; inFile >> value; } inFile.close(); length = count; return TRUE; } void IntList::LinearSearch(int item, int& index, Boolean& found) const { index = 0; if (length == 0) found = FALSE; else { while (index < length && item != list[index]) index++; found = (index < length); } } void IntList::DeleteOne(int item) { Boolean found; int index; int count; LinearSearch(item, index, found); if (found) { for (count = index; count < length - 1; count++) list[count] = list[count + 1]; length--; } } void IntList::DeleteAll(int item) { int len = -1; if (length <= 0) return; while (len != length) { len = length; DeleteOne(item); } } void IntList::Display(void) const { for (int i = 0; i < length; i++) { cout << setw(3) << list[i]; if ( !((i + 1) % 20)) cout << endl; } cout << endl; }Back to Outline