堆栈的顺序结构实现——数组
vs2017编程环境
#pragma once
#include<iostream>
using namespace std;
#define MAX 50
class Arr
{
public:
Arr();
~Arr();
bool IsFull();//判断是否为空
bool IsEmpty();//判断是否满
void Push();//压栈
void Pop();//出栈
void Show_arr();//遍历
int Top;
int Data[MAX];
};
#include"堆栈的顺序存储实现.h"
#include<iostream>
using namespace std;
Arr::Arr()
{
this->Top=-1;
}
Arr::~Arr()
{
}
bool Arr::IsFull()
{
return MAX - 1 == this->Top ? true : false;
}
bool Arr::IsEmpty()
{
return this->Top == -1 ? true : false;
}
void Arr::Push()//入栈
{
if (this->IsFull())
{
cout << "栈已满,无法入栈" << endl;
}
else
{
int x=0;
cout << "请输入压栈数据" << endl;
cin >> x;
++(this->Top);
this->Data[Top] = x;
}
cout << "压栈成功" << endl;
}
void Arr::Pop()//出栈
{
if (this->IsEmpty())
{
cout << "堆栈为空" << endl;
}
else
{
cout << "出栈元素为:" << this->Data[this->Top] << endl;
this->Data[(this->Top)--];
}
}
void Arr::Show_arr()
{
int m = this->Top;
while (m != -1)
{
cout << this->Data[m--] << " ";
}
}
#include"堆栈的顺序存储实现.h"
#include<iostream>
using namespace std;
int main()
{
Arr a;
int i=9 ;
while (i!=0)
{
cout << "1.压栈 2.出栈 3.遍历 4.判断是否栈满 5.判断栈是否空 0.退出" << endl;
cin >> i;
switch (i)
{
case 0:
break;
case 1:
a.Push();
break;
case 2:
a.Pop();
break;
case 3:
a.Show_arr();
break;
case 4:
a.IsFull();
break;
case 5:
a.IsEmpty();
break;
}
}
system("pause");
return 0;
}