首页 > 其他分享 >栈之顺序栈

栈之顺序栈

时间:2022-10-03 10:23:27浏览次数:37  
标签:顺序 return 入栈 SqStack top 算法

栈之顺序栈

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;
}

 

 

 

标签:顺序,return,入栈,SqStack,top,算法
From: https://www.cnblogs.com/wlb429/p/16750100.html

相关文章