📄 stack1.h
字号:
#include <iostream.h>
class Stack1 //顺序栈类
{ //数组元素类型为抽象类型dataType
dataType *table; //指向数组的指针
int size; //栈的数组容量
int top; //栈顶数据元素的下标
public:
Stack1(int n=0);
~Stack1();
bool isEmpty(); //判断栈的状态是否为空
bool isFull(); //判断栈的状态是否已满
bool push(const dataType k); //入栈
dataType pop(); //出栈
dataType get(); //获得栈顶数据元素值,未出栈
friend ostream& operator<<(ostream& out,Stack1 &s);
//输出栈中各数据元素值
};
Stack1::Stack1(int n) //构造空栈
{
table=NULL; //n=0时
if(n>0)
table=new dataType[n]; //为栈的数组分配n个存储单元
size=n;
top=-1; //设置栈空
}
Stack1::~Stack1() //析构函数
{
delete []table;
size=0;
top=-1;
}
bool Stack1::isEmpty() //判断栈的状态是否为空
{
return (table==NULL || top==-1);
}
bool Stack1::isFull() //判断栈的状态是否已满
{
return (table==NULL || top>=size);
}
bool Stack1::push(const dataType k) //数据元素入栈
{
if(!isFull()) //栈不满时
{
top++;
table[top]=k;
return true;
}
else
{
cout<<"栈已满,"<<k<<"值无法入栈!\n";
return false; //栈溢出
}
}
dataType Stack1::pop() //栈顶数据元素出栈
{
dataType k;
if(!isEmpty()) //栈不空
{
k=table[top]; //取得栈顶数据元素值
top--;
return k;
}
else
cout<<"栈已空,无值出栈!\n";
return -1;
}
dataType Stack1::get() //获得栈顶数据元素值,未出栈
{
if(!isEmpty())
return table[top];
else
cout<<"栈已空,无法获得栈顶数据元素值!\n";
return -1;
}
ostream& operator<<(ostream& out,Stack1 &s)
{ //输出栈中各数据元素值,输出流运算符重载
cout<<"顺序栈: ";
for(int i=0;i<=s.top;i++)
cout<<s.table[i]<<" ";
cout<<endl;
return out;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -