【数据结构】顺序栈的基本操作(C++实现)

什么是顺序栈

顺序栈是一种基于数组实现的栈(Stack)数据结构。栈是一种后进先出(Last In, First Out,LIFO)的数据结构,类似于我们日常生活中的堆叠物体,最后放入的元素最先被取出。顺序栈的主要特点是使用数组来存储栈中的元素,并通过栈顶指针来记录栈顶元素的位置。

栈的定义

静态定义

#define Maxsize 5
typedef struct SqStack{
    double data[Maxsize];//定长数组,类型需要什么定义什么
    int top;//栈顶下标
}SqStack;

动态定义

#define Maxsize 5
typedef struct SqStack{
    double *base;//栈底指针
    double *top;//栈顶指针
}SqStack;

栈的初始化

bool Push(SqStack &s,double e){
    if(s.top-s.base==Maxsize){
        return false;//栈满了
    }
    *(s.top++)=e;//先给s.top赋值,再++
    return true;
}

入栈

bool Push(SqStack &s,double e){
    if(s.top-s.base==Maxsize){
        return false;//栈满了
    }
    *(s.top++)=e;//先给s.top赋值,再++
    return true;
}

出栈

bool Pop(SqStack &s,int &e){
    if(s.base==s.top){
        return false;//栈空了
    }
    e=*(--s.top);//先--,再赋值给e
    return true;
}

取栈顶

double GetTop(SqStack s){
    if (s.top!=s.base){//如果不是空栈,取栈顶,空栈是s.top==s.base
        return *(s.top-1);
    }
    else{
        return -1;
    }
}
© 版权声明
THE END
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容