顺序栈

栈:限定仅在表尾进行插入与删除操作的线性表。又称为后进先出(LIFO)的线性表。


ADT Stack

{

数据对象:

D={a1|1≤in,n0,ai为T类型}

数据关系:

R={<ai,ai+1>|ai,ai+1∈D,i=1,···,n-1}

基本运算:

bool Push(T e)          //进栈

    bool Pop()                //出栈

    GetTop()    //取栈顶元素

     bool StackEmpty()  //判断栈是否为空

}

代码实现:

#include<iostream>


using namespace std;


#define MaxSize 100


class Stack
{
private:
int top;
int *data;
public:
Stack();
~Stack(){delete[] data;}
bool Pop();
bool Push(int &e);
int GetTop();
};


Stack::Stack()
{
top=-1;
data=new int[MaxSize];
}


bool Stack::Pop()
{
if(top == -1)return false;
cout<<data[top--]<<endl;
return true;
}


bool Stack::Push(int &e)
{
if(top == MaxSize-1)return false;
data[++top]=e;
return true;
}


int Stack::GetTop()
{
if(top == -1)return -1;
return data[top];
}


int main()
{


Stack S;


while(1)
{
int k;
cin>>k;
switch(k)
{
case 1:{ system("cls");
int e;
cin>>e;
S.Push(e);
  }break;
case 2:system("cls");S.Pop();break;
case 3:system("cls");cout<<S.GetTop();
}
}


return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值