Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <iomanip> // для setw
- using namespace std;
- class Stack
- {
- public:
- void push() ;
- void pop() ;
- void print();
- void makeEmpty() ;
- };
- class StackP : public Stack
- {
- private:
- int x;
- public:
- StackP *Next, *Head;
- void push(int x, StackP *&MyStackP) const
- {
- StackP *temp = new StackP;
- temp->x = x;
- temp->Next = MyStackP->Head;
- MyStackP->Head = temp;
- }
- void print(StackP *MyStackP)
- {
- StackP *temp = MyStackP->Head;
- while (temp != NULL)
- {
- cout << temp->x << " ";
- temp = temp->Next;
- }
- }
- void ClearStackP(StackP *MyStackP)
- {
- while (MyStackP->Head != NULL)
- {
- StackP *temp = MyStackP->Head->Next;
- delete MyStackP->Head;
- MyStackP->Head = temp;
- }
- }
- void makeEmpty(StackP *MyStackP)
- {
- MyStackP->Head = NULL;
- }
- };
- class StackA : public Stack
- {
- private:
- char *stackPtr; // указатель на стек
- const int size; // максимальное количество элементов в стеке
- int top; // номер текущего элемента стека
- public:
- StackA(int maxSize) :
- size(maxSize) // инициализация константы
- {
- stackPtr = new char[size]; // выделить память под стек
- top = 0; // инициализируем текущий элемент нулем;
- }
- ~StackA()
- {
- delete[] stackPtr; // удаляем стек
- }
- void push(const char &value)
- {
- if (top < size);
- stackPtr[top++] = value;
- }
- void pop()
- {
- if (top > 0);
- stackPtr[--top];
- }
- void makeEmpty()
- {
- top = 0;
- }
- int getTop() const
- {
- return top;
- }
- int getStackSize() const
- {
- return size;
- }
- char *getPtr()
- {
- return stackPtr;
- }
- // вывод стека на экран
- void print()
- {
- int ix;
- for (ix = 0; ix < top; ix++)
- cout << setw(2) << stackPtr[ix];
- cout << endl;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement