栈之顺序栈

栈之顺序栈

1.栈的定义

  • 只允许在一端插入和删除的线性表

  • 允许插入和删除的一端称为栈顶(top)另一端称为栈底(bottom)

  • 当栈中没有元素称为空栈

  • 栈的插入操作称为入栈或进栈

  • 删除操作称为出栈或退栈

  • 特点:后进先出(LIFO)表 先进后出

2.顺序栈的表示和实现

采用顺序储存的栈叫顺序栈

2.1初始化顺序栈

2.1.1顺序栈的储存结构

#define MaxSize 50
typedef struct {
    ElemType data[MaxSize];
    int top;
}SqStack;

2.1.2定义一个空栈

void InitStack(SqStack &S) 
{
    S.top = -1;//栈为空
}

2.2入栈

2.2.1算法思想

  1. 判断栈是否为满

  2. 如果栈满不能入栈,不满则可以入栈

2.2.2算法设计

bool Push(SqStack &S, ElemType e) 
{
    if (S.top == MaxSize - 1)
    {
        //printf("栈满,无法入栈\n");
        return false;
    }
    S.data[++S.top] = e;
    return true;
}

2.3读栈顶元素

2.3.1算法思想

  1. 判断栈是否为空

  2. 为空则无法获取,不为空则获取成功

  3. 用m储存读取的栈顶元素

2.3.2算法设计

bool GetTop(SqStack S,ElemType &m) 
{
    if (S.top == -1) 
    {
        return false;
    }
    m = S.data[S.top];
    return true;
}

2.4出栈

2.4.1算法思想

  1. 判断栈是否为空

  2. 如果为空则不能出栈,不为空则可以出栈

  3. 用m储存栈顶元素

2.4.2算法设计

bool Pop(SqStack& S, ElemType& m) //
{
    if (S.top == -1) 
    {
        return false;
    }
    m = S.data[S.top--];
    return true;
}

 

 

 

posted @   骆宾王  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示