// ННГУ, ВМК, Курс "Методы программирования-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
Хостинг от uCoz