/////// File OrderedSeq.h /////// typedef unsigned Uint; class OrderedSeq // abstract base class { public: OrderedSeq() : ordered(0) {} // default constructor virtual int enter(void* any); // add any, -1 failed virtual void remove(Uint i) =0; // PURE remove by index virtual int index(void* key); // -1 if not found virtual Uint length() =0; // PURE current length of seq virtual ~OrderedSeq() {} // virtual destructor protected: virtual int append(void* any) =0; // PURE add any at end, -1 failed virtual void sort(); // sort into order virtual Uint sorted() { return ordered;} // 0 if arr is not sorted virtual void sorted(Uint s) { ordered = s;} // set sorted flag private: virtual void swap(Uint i, Uint j) =0; // PURE interchange elements virtual int cmp(Uint i, Uint j) =0; // PURE compare elements virtual int cmp(void* key, Uint j) =0; // PURE compare key to element void quicksort(int l, int r); Uint partition(int l, int r); Uint ordered; // sorted flag };