// ННГУ, ВМК, Курс "Методы программирования-2", С++, ООП
//
// Copyright (c) Гергель В.П. 27.07.2000 (07.08)
//
// Динамические структуры данных - стек - версия 3.1

#include <stdio.h>
#include <conio.h>
#include "datstack.h"

/*---------------------------------------------*/
void TStack :: Put ( const TData &Val ) { // положить в стек


Skipped...

} // Put
/*---------------------------------------------*/

TData TStack :: Get(void) { // взять из стека с удалением
  TData temp = -1;
  if ( pMem == NULL  ) SetRetCode ( DataNoMem );
  else if ( IsEmpty() ) SetRetCode ( DataEmpty );
  else {
    temp = pMem[Hi--];
    DataCount--;
  }
  return temp;
} // Get
/*---------------------------------------------*/

int TStack :: GetNextIndex(int index) { // получить следующее значение  индекса
  return ++index;
} // GetNextIndex
/*---------------------------------------------*/

void TStack :: Paint(int y,int x1,int x2) { // показать рисунок структуры
  int i, px;
  gotoxy(x1,y);
  if ( DataCount == 0 ) px = x1 - 1;
  else {
    px = x1 + double(DataCount) * (x2-x1+1) / MemSize - 1;
    if ( (px0) ) px = x1;
    if ( DataCount == MemSize )    px = x2;
  }
  for ( i=x1;   i<=px; i++ ) cprintf("-");
  for ( i=px+1; i<=x2; i++ ) cprintf("-");
  if ( (x1<1)||(x1>79) || (px<1)||(px>79) || (x2<1)||(x2>79) ) {
    printf("Error in parameters of painting...\n");
//    getch();
  }
}
/*---------------------------------------------*/

void TStack :: Print() { // печать значений стека
  for ( int i=0;   i < DataCount; i++ )
    printf("%d ",pMem[i]);
  printf("\n");
}
/*---------------------------------------------*/

int  TStack :: IsValid() { // тестирование структуры
  int res = 0;
  if ( pMem == NULL )                      res  = 1;
  if ( MemSize < DataCount )               res += 2;
  return res;
}
/*---------------------------------------------*/

void TStack :: CopyToVector(TElem v[]) { // копировать в очередь
  for ( int i=0; i < DataCount; i++ )
    v[i] = pMem[i];
}
Хостинг от uCoz