【数据结构】3-1-2 栈的顺序存储

数据结构知识点合集

  • 知识点

  • 顺序栈的定义

采用顺序存储方式的栈,用静态数组实现,给每个元素分配连续的存储空间,用栈顶指针指向栈顶元素

/*定义栈中的元素最大个数*/

#define MaxSize 10

/*顺序栈结构体*/

typedef struct

{

    /*静态数组存放栈中元素*/

    ElemType data[MaxSize];

    /*栈顶指针*/

    int top;

}SqStack;

  • 顺序栈的基本操作

栈的初始化:

/*栈的初始化*/

void InitStack(SqStack &S)

{

    /*初始化栈顶指针*/

    S.top = -1;

}

或 S.top = 0(栈顶指向下一个空位置)

判断栈是否为空

/*判断栈是否为空*/

bool StackEmpty(SqStack S)

{

    /*栈顶指针为-1时栈为空*/

    if(S.top == -1)

        return true;

    else

        return false;

}

或 S.top == 0

入栈:

/*入栈操作*/

bool Push(SqStack &S,ElemType x)

{

    /*栈满插入失败*/

    if(S.top==MaxSize-1)

        return false;

    /*将新元素压入栈顶*/

    //S.data[++S.top]=x

    S.top = S.top + 1;

    S.data[S.top] = x;

    return true;

}

或 S.data[S.top++] = x

出栈:

/*出栈操作*/

bool Pop(SqStack &S,ElemType &x)

{

    /*栈空报错*/

    if(S.top == -1)

        return false;

    /*将栈顶元素出栈*/

    //x = S.data[S.top--];

    x = S.data[S.top];

    S.top = S.top - 1;

    return true;

}

或 x = S.data[--S.top]

读取栈顶元素:

/*读取栈顶元素*/

bool GetTop(SqStack S,ElemType &x)

{

    /*栈空报错*/

    if(S.top == -1)

        return false;

    /*读取栈顶元素*/

    x = S.data[S.top];

    return true;

}

或 x=S.data[S.top-1]

  • 共享顺序栈

两个栈共享同一片空间 ;一个栈栈底在存储空间的最后一个位置,另一个栈的栈底在存储空间的第一个位置

共享栈判断栈满的条件:top0 + 1 == top1

/*共享栈*/

typedef struct

{

    ElemType data[MaxSize];

    /*栈0的栈顶元素*/

    int top0;

    /*栈1的栈顶元素*/

    int top1;

}ShStack;

/*共享栈的初始化*/

void InitShStack(ShStack &S)

{

    S.top0 = -1;

    S.top1 = MaxSize;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值