|
//Date: 2003.09.22 //File: OB_List02.cpp //Author: AOU #include <iostream.h> #include <stdlib.h> #include <time.h> /* NEW void testIsSorted(void); void testPopulate(void); void initialize(void); bool isSorted(void); void populate(int n); */ //////////////////////////////////////// //constants //////////////////////////////////////// const int MAX_SIZE = 25; const int TEST_COUNT = 19; const int MAX_VALUE = 15; const int UNDEFINED = -911; //////////////////////////////////////// //prototypes //////////////////////////////////////// void testSortBubble(void); void testInsert(void); void testShuffle(void); void testIsSorted(void); void testPopulate(void); //////////////////////////////////////// //class COList //////////////////////////////////////// class COList { private: int a[MAX_SIZE]; int n; public: COList(void); void display(void); void initialize(void); bool insert(int x); void swap(int &x, int &y) { int temp = x; x = y; y = temp; }; bool isSorted(void); void shuffle(void); void populate(int n); void sortBubble(void); }; //////////////////////////////////////// //main //////////////////////////////////////// void main(void) { srand(time(NULL)); /* COList myList, youList, hisList; myList.display(); myList.insert(12); myList.display(); myList.insert(16); myList.display(); myList.insert(14); myList.display(); //testInsert(); //testShuffle(); //testSortBubble(); */ ///testPopulate(); testIsSorted(); } void testPopulate(void) { cout << "++++++++++++\n"; cout << "testPopulate\n"; cout << "++++++++++++\n"; for (int c=1; c<=TEST_COUNT; c++) { COList myList; int n = rand()%(MAX_SIZE+1); cout << "n = " << n << endl; myList.populate(n); myList.display(); cout << "*****************\n"; } } void COList::populate(int n) { for (int i=1; i<=n; i++) { int x = rand()%(MAX_VALUE+1); (*this).insert(x); } } void testIsSorted(void) { cout << "++++++++++++\n"; cout << "testIsSorted\n"; cout << "++++++++++++\n"; for (int c=1; c<=TEST_COUNT; c++) { COList myList; int n = rand()%(MAX_SIZE+1); cout << "n = " << n << endl; myList.populate(n); myList.display(); if (myList.isSorted()) cout << "List is sorted\n"; else cout << "List is NOT NOT sorted\n"; cout << "*****************\n"; } } bool COList::isSorted(void) { for (int i=0; i<=n-2; i++) if (a[i] > a[i+1]) return false; return true; } void COList::initialize(void) { for (int i=0; i<=MAX_SIZE-1; i++) a[i] = UNDEFINED; n = 0; } bool COList::insert(int x) { if (0 == n) { a[n] = x; n++; return true; }; if (MAX_SIZE == n) return false; if (n > 0) { a[n] = x; n++; for (int i=n-1; i>=1; i--) { if (a[i] >= a[i-1]) return true; swap(a[i], a[i-1]); } return true; } return false; } void COList::display(void) { cout << "a[" << n << "]: "; for (int i=0; i<=n-1; i++) cout << a[i] << ' '; cout << endl; } COList::COList(void) { cout << "BEING INITIALIZED\n"; initialize(); } |