理论基础 —— 栈 —— 顺序栈

本文介绍了一个使用C++模板实现的顺序栈(seqStack)类,包括基本操作如入栈、出栈、判断栈空及获取栈顶元素等。通过设定固定大小的数据数组来存储栈内元素,并利用栈顶指针的变化来跟踪栈的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【实现类】

const int maxSize=100;
template <class T>
class  seqStack{
public:
    seqStack();
    ~seqStack();
    void push(T x);//入栈
    T pop();//出栈
    T getTop();//获取栈顶元素
    bool empty();//判断是否为空
private:
    T data[maxSize];//数据域
    int top;//栈首指针
}

【构造函数】

将栈首指针设为 -1 即可

template <class T>
seqStack<T>::seqStack(){
    top=-1;
}

【进栈】

  1. 若 top>=maxSize,则给出上溢信息
  2. 栈指针加 1,指向进栈地址
  3. 新元素 x 进栈
template <class T>
void seqStack<T>::push(T x){
    if(top==maxSize-1)//判断是否溢出  
        throw  "上溢";
    top++;//栈顶指针+1
    data[top]=x;//新元素入栈
}

【出栈算法】

  1. 若 top<=0,则给出下溢信息
  2. 获取要退栈的元素 x
  3. 栈指针减1,指向栈顶
  4. 返回退栈元素
template <class T>
T seqStack<T>::pop(){
    if(top==-1)//溢出判断
        throw  "下溢";
    T x=data[top];//取出栈元素
    top--;//栈顶指针-1
    return x;//返回出栈元素
}

【判断栈空】

判断栈顶指针是否为 -1,若 top=-1,则栈空

template <class T>
bool seqStack<T>::empty(){
    if(top==-1)
        return true;
    return false;
}

【取栈顶元素】

  1. 判断栈是否为空
  2. 若栈不为空,直接返回栈顶元素 data[top]
template <class T>
T seqStack<T>::getTop(){
    if(empty())
        throw  "栈为空";
    return data[top];
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值