这篇主要是顺序栈的基本操作包括入栈、出栈、取栈顶元素和判断是否为空。话不多说,下面给出源码和一些注释:
#include<iostream>
using namespace std;
#define MAX 100
typedef int DataType;
class SXstack
{
public:
SXstack()
{
base = new DataType[MAX];
top = base;
size = 0;
}
//入栈
int push(int x);
//出栈
int pop(int x);
//取栈顶元素
int Gettop();
//判断是否为空
bool Isempty();
//打印输出
//void print();
//求栈的长度
int Len();
//析构函数
~SXstack()
{ }
private:
int len = 0;
//建立数组
int data[MAX];
//栈顶指针1
DataType *top;
//栈底指针
DataType *base;
//栈的大小
int size;
};
//元素入栈
int SXstack::push(int x)
{
//判断栈是否满
if (top - base < size)
{
*top = x;
top++;
len++;
size++;
return 1;
}
else
{
return 0;
}
}
//元素出栈
int SXstack::pop(int e)
{
//判断是否为空
if (top > base)
{
top--;
e = *top;
len--;
size--;
return e;
}
else
{
return 0;
}
}
//取栈顶元素
int SXstack::Gettop()
{
int e;
if (top > base)
{
e = *(top - 1);
return e;
}
else
{
return 0;
}
}
//判断栈是否为空
bool SXstack::Isempty()
{
if (top = base)
{
return true;
}
else
{
return false;
}
}
int SXstack::Len()
{
return len;
}
int main()
{
SXstack a;
for (int i = 0; i < 10; i++)
{
a.push(i);
}
cout << "栈顶元素为:";
cout<<a.Gettop();
cout << endl;
cout << "出栈一个元素后栈顶元素为:";
a.pop(9);
cout << a.Gettop();
cout << endl;
for (int i = 0; i < 10; i++)
{
a.push(i);
}
cout << "栈顶元素为:";
cout << a.Gettop();
cout << endl;
a.pop(9);
cout << "出栈一个元素后栈顶元素为:";
cout << a.Gettop();
cout << endl;
cout << "元素一个一个全部出栈后:" << endl;
for (int j = 8; j>=0; j--)
{
a.pop(j);
}
bool b = a.Isempty();
if (b)
{
cout << "栈为空!"<<endl;
}
return 0;
}
下面是运行后的图片
以上是顺序栈的一些基本操作,希望能有点帮助。