封装一个顺序栈,并封装其相应的操作:判空、入栈、出栈、遍历栈、销毁
头文件
#ifndef HEAD_H
#define HEAD_H
#define Max 20
class Stack{
private:
int *data;
int top;
public:
//创建
void stack_create();
//判空
bool stack_empty();
//判满
bool stack_full();
//入栈
void stack_push();
//出栈
void stack_pop();
//遍历
void stack_show();
//销毁
void stack_delete();
};
#endif // HEAD_H
源文件
#include <iostream>
#include <head.h>
using namespace std;
//创建
void Stack::stack_create(){
data = new int[Max];
top = -1;
}
//判空
bool Stack::stack_empty(){
return top==-1;
}
//判满
bool Stack::stack_full(){
return top==Max-1;
}
//入栈
void Stack::stack_push(){
if(stack_full()){
cout<<"栈满,入栈失败"<<endl;
return;
}
int num;
cout<<"请输入要入栈的数:";
cin>>num;
data[++top]=num;
}
//出栈
void Stack::stack_pop(){
if(stack_empty()){
cout<<"栈空,出栈失败"<<endl;
return;
}
cout<<data[top]<<"出栈成功"<<endl;
top--;
}
//遍历
void Stack::stack_show(){
if(stack_empty()){
cout<<"栈空,遍历失败"<<endl;
return;
}
for(int i = top; i>=0; i--){
cout<<data[i]<<' ';
}
cout<<endl;
}
//销毁
void Stack::stack_delete(){
delete []data;
data = nullptr;
cout<<"销毁成功"<<endl;
}
主调函数
#include <iostream>
#include <head.h>
using namespace std;
int main()
{
Stack s;
//创建
s.stack_create();
//创建后遍历
s.stack_show();
//入栈
s.stack_push();
s.stack_push();
s.stack_push();
//入栈后遍历
s.stack_show();
//出栈
s.stack_pop();
s.stack_pop();
//出栈后第一次遍历
s.stack_show();
//出栈
s.stack_pop();
//最终遍历
s.stack_show();
//销毁
s.stack_delete();
return 0;
}
运行结果

115

被折叠的 条评论
为什么被折叠?



