数据结构第三章--顺序栈

1.顺序栈的定义

#define MaxSize 10    //定义顺序栈中元素的最大个数
typedef struct{
    ElemType data[MaxSize];//静态数组存放栈中元素
    int top;                //栈顶指针
}SqStack;

void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    //。。。后续操作
}

栈顶指针大小为4B

初始化操作

#define MaxSize 10    //定义顺序栈中元素的最大个数
typedef struct{
    ElemType data[MaxSize];//静态数组存放栈中元素
    int top;                //栈顶指针
}SqStack;

//初始化栈
void InitStack(SqStack &S){
    S.top = -1;    //初始化栈顶指针
}

void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    InitStack(S);
    //。。。后续操作
}


//判断栈空
bool StackEmpty(SqStack S){
    if(S.top==-1)    //空
        return true;
    else            //不空
        return false;
}

进栈操作

#define MaxSize 10    //定义顺序栈中元素的最大个数
typedef struct{
    ElemType data[MaxSize];//静态数组存放栈中元素
    int top;                //栈顶指针
}SqStack;

//新元素入栈
bool Push(SqStack &S,ElemType x){
    if(S.top==MaxSize-1)//栈满,报错
        return false;
    S.top = S.top + 1;//指针先+1
    S.data[S.top] = x;//新元素入栈
    return true;    
}

出栈操作

bool Pop(SqStack &S,ElemType &x){
    if(S.top==-1)//栈空 报错
        return false;
    x=S.data[S.top];//栈顶元素先出栈
    S.top = S.top -1;//指针再减1
    return true;
}

出栈操作
bool Pop(SqStack &S,ElemType &x){
    if(S.top==-1)//栈空 报错
        return false;
    x=S.data[S.top--];//栈顶元素先出栈 指针再减1
    return true;
}
读栈顶元素
bool GetTop(SqStack &S,ElemType &x){
    if(S.top==-1)//栈空 报错
        return false;
    x=S.data[S.top];//x记录栈顶元素
    return true;
}

读栈顶元素

读栈顶元素
bool GetTop(SqStack &S,ElemType &x){
    if(S.top==-1)//栈空 报错
        return false;
    x=S.data[S.top];//x记录栈顶元素
    return true;
}

【初始化栈的另一种方式】

//初始化栈
#define MaxSize 10    //定义顺序栈中元素的最大个数
typedef struct{
    ElemType data[MaxSize];//静态数组存放栈中元素
    int top;                //栈顶指针
}SqStack;

//初始化栈
void InitStack(SqStack &S){
    S.top = 0;    //初始化栈顶指针【与之前的不同】
}

void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    InitStack(S);
    //。。。后续操作
}


//判断栈空
bool StackEmpty(SqStack S){
    if(S.top==0)    //空【与之前的不同】
        return true;
    else            //不空
        return false;
}
[与之前不同]
进栈
S.data[S.top++]=x;
出栈
x=S.data[--S.top];

【共享栈】

//初始化栈
#define MaxSize 10    //定义顺序栈中元素的最大个数
typedef struct{
    ElemType data[MaxSize];//静态数组存放栈中元素
    int top0;                //0号栈顶指针
    int top1;                 //1号栈栈顶指针
}ShStack;

//初始化栈
void InitStack(ShStack &S){
    S.top0 = -1;    //初始化栈顶指针
    S.top1 = MaxSize;
}

栈满的条件:
top0+1==top1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值