栈
栈是一种只能在一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。栈顶的当前位置是动态的,由一个被称为栈顶指针的位置提示器来提示。表的另一端称为栈底,当栈中没有数据元素时,称为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。
栈的顺序存储结构及其基本运算的实现
- 顺序栈的初始化和销毁
- 判断栈是否为空
- 进栈
- 出栈同时取栈顶元素
定义一个顺序栈类
#include <iostream>
using namespace std;
#define MAXSIZE 6
class Sqstack{
public:
Sqstack();
~Sqstack();
bool StackEmpty();
bool Push(char e);
bool Pop(char &e);
private:
char* data;
int top;
};
1.顺序栈的初始化和销毁
Sqstack::Sqstack(){
data = new char[MAXSIZE];//为data分配栈空间
top = -1; //栈顶指针初始化
}
Sqstack::~Sqstack(){
delete [] data;//释放data占用的空间
}
2.判断栈是否为空
bool Sqstack::StackEmpty(){
return top==-1;//如果栈顶指针为空,
}
3.进栈
bool Sqstack::Push(char e){
if(top==MAXSIZE-1){
cout << "栈已满!" << endl;
return false;
}else{
data[++top] = e;
cout << "进栈成功!" << endl;
return true;
}
}
4.出栈同时取栈顶元素
bool Sqstack::Pop(char &e){//通过引用的方式返回该元素
if(StackEmpty()){
cout << "栈为空!" << endl;
return false;
}else{
e = data[top--];//返回后栈顶指针-1
return true;
}
}