动态数组栈的实现
Stack.h
#pragma once
class Stack
{
public:
Stack();
~Stack();
private:
int top = 0;
int end = 0;
private:
int MaxSize=10;
const int increase = 10;
private:
bool isEmpty(void);
bool isFull(void);
void Increase(void);
public:
int *stack;
int Size(void);
public:
void push(int);
int pop(void);
};
Stack.cpp
#include "Stack.h"
Stack::Stack()
{
stack = new int[MaxSize];
}
Stack::~Stack()
{
delete stack;
stack = nullptr;
}
bool Stack::isEmpty(void)
{
if (top == end)
{
return true;
}
return false;
}
bool Stack::isFull(void)
{
if (top - end == MaxSize)
{
return true;
}
return false;
}
void Stack::Increase(void)
{
MaxSize = MaxSize + increase;
int *oldStack = stack;
stack = new int[MaxSize];
for (int index = 0; index < top; index++)
{
stack[index] = oldStack[index];
}
delete oldStack;
oldStack = nullptr;
}
int Stack::Size(void)
{
return top - end;
}
void Stack::push(int data)
{
if (isFull())
{
Increase();
}
stack[top++] = data;
}
int Stack::pop(void)
{
if (isEmpty())
{
return 0;
}
return stack[--top];
}
main.cpp
void main()
{
Stack s;
for (int i = 0; i < 10; i++)
{
s.push(i);
}
int size = s.Size();
for (int i = 0; i < size; i++)
{
cout << s.pop() << endl;
}
system("pause");
}