数据结构与算法——顺序栈

今天总结栈的顺序存储结构

什么是栈?

是一种线性表,其特点是限定尽在表尾进行插入和删除操作,表尾栈一段也叫栈顶,另一端就是栈底了。既然栈是线性表,那么栈也就有两种存储数据的方式,顺序存储和链式存储。今天实现的是顺序存储的栈,也就顺序栈。

图示(来自百度图片):


顺序栈的实现:

栈的顺序存储还是比较简单的,就是对数组进行操作。

<span style="font-family:Courier New;font-size:14px;">#include <iostream>

using namespace std;
const int StackSize = 1024; //栈的最大高度
template <class T>
class SeqStack {
public:
    SeqStack() {
        top = -1; //空栈时
    }
    void PushStack(T x); //将元素x入栈
    T PopStack(); //出栈
    T GetTop(); //得到栈顶元素
    bool IsEmpty(); //判断栈是否为空
    void PrintStack();
private:
    int top; //栈顶指针
    T data[StackSize];
};

template <class T>
void SeqStack<T>::PushStack(T x) {
    data[++top] = x;  //将x入栈 将top+1
}


template<class T>
void SeqStack<T>::PrintStack() {
    if(IsEmpty()) cout<<"栈为空"<<endl;
    for(int i=top;i>=0;i--) {
        cout<<data[i]<<" ";
    }
    cout<<endl;
}

template<class T>
T SeqStack<T>::PopStack() {
    if(IsEmpty()) cout<<"栈为空";
    return data[top--];  //返回栈顶元素后 将指针下移
}

template<class T>
T SeqStack<T>::GetTop() {
    if(IsEmpty()) {
            return -1;
    }else {
        return data[top];
    }

}
//判断栈是否为空 就是判断top指针是否等于-1
template<class T>
bool SeqStack<T>::IsEmpty() {
    if(top==-1)
        return true;
    else
        false;
}
int main()
{
    SeqStack<int> stack;
    for(int i=0;i<5;i++) {
        stack.PushStack(i);
    }
    cout<<"栈内元素:(按照栈顶到栈底顺序)"<<endl;
    stack.PrintStack();
    cout<<"出栈"<<endl;
    stack.PopStack();
    stack.PrintStack();
    cout<<"获取栈顶元素"<<endl;
    cout<<stack.GetTop()<<endl;
    return 0;
}
</span>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值