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

来源:互联网 发布:软件测试技术 编辑:程序博客网 时间:2024/06/06 08:37

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

什么是栈?

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

图示(来自百度图片):


顺序栈的实现:

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

<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指针是否等于-1template<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 0
原创粉丝点击