// ННГУ, ВМК, Курс "Методы программирования-2", С++, ООП // // Copyright (c) Гергель В.П. 30.07.2000 // // Динамические структуры данных - система N стеков #ifndef __MULTISTACK_H #define __MULTISTACK_H #include "datstack.h" #include "datqueue.h" #include "multroot.h" class TMultiStack : public TMultiRoot { protected: TStack *pStack[StackNum+1]; // стеки - память выделяется из StackMem int FreeMemSize; // размер свободной памяти protected: // поля и методы для перепаковки TElem *pStackMem[StackNum+1]; // базовые адреса для памяти стеков int RelocationCount; // количество перепаковок int StackRelocation ( int nst ); // перепаковка памяти int GetFreeMemSize ( void ); // оценка объема свободной памяти virtual void SetStackLocation ( TElem *pStackMem[] ); // оценка pStackMem public: TMultiStack (); ~TMultiStack (); int IsEmpty ( int ns ) const; // контроль пустоты СД int IsFull ( int ns ) const; // контроль переполнения СД virtual void Put ( int ns, const TData &Val ); // положить в стек virtual TData Get ( int ns ); // взять из стека с удалением int GetRelocationCount() { return RelocationCount; } // служебные методы void Paint(int y, int x1, int x2); // показать рисунок структуры }; #endif