您的位置:首页 > 理论基础 > 数据结构算法

【C++数据结构】动态数组栈的实现

2016-10-08 10:51 323 查看
动态数组栈的实现

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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言