【考研数据结构】静态数组实现的顺序栈

静态数组实现了一个顺序栈,是考研数据结构内容之一

  1. 栈顶指针Top指向栈顶元素(其他实现方法也可能是指向下一个栈顶元素进栈后的位置)
  2. 初始时,栈顶指针int top=-1
  3. 栈空条件;S.top==-1
  4. 栈满条件:S.top==MaxSize-1;
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
//设置栈的最大长度为10
#define MaxSize 10
/*
栈:
1.英文名为stack,是线性的数据结构,可以用数组存储
2.栈只允许从【栈顶】加入数据和删除数据,就像堆起来的盘子,只能从顶拿走和放入
3.栈是LIFO(Last In First Out),后入先出
*/

typedef struct{
    int data[MaxSize];//顺序栈使用静态数组存储的
    int top;//栈顶指针,这个指针存储栈所在位置的数组下标
}SqStack;

void InitStack(SqStack *S){    
    S->top=-1;//由于数组下标从0开始,所以当没有元素时,我们设定栈顶位置为-1;所以栈的判空条件为S->top==-1?
    
}

bool IsEmpty(SqStack S){
    if(S.top==-1)
    {
        printf("Stack is Empty!\n");
        return true;
    }

    else
    {
        printf("Stack is NOT Empty!\n");
        return false;
    }
}

bool IsFull(SqStack S){
    
    if(S.top==MaxSize-1)
    {
        printf("Stack is full now\n");
        return true;
    }

    else
    {
        printf("Stack is NOT full now\n");
        return false;
    }
}

//入栈操作
bool Push(SqStack *S,int x)
{
    if( S->top==MaxSize-1 )//栈满
    {
        printf("Error:Stack is full ,failed to Push\n");
        return false;
    }

    S->top+=1;
    S->data[S->top]=x;//这两行也可以写成S->data[++S->top]=x;  !!
    return true;
}


//弹栈操作
bool Pop(SqStack *S,int *x){
    if(S->top==-1)
    {
        printf("Error:Stack is empty, failed to Pop\n");
        return false;
    }

    *x=S->data[S->top];
    S->top=S->top-1;//这两行也可以写成:*x=S->data[S->top--];
    return true;

}

//读栈顶元素操作
bool readTop(SqStack S,int *x)
{
    if(S.top==-1)
    {
        printf("Error: Stack is empty, failed to read the top\n");
        return false;
    }

    else
    {
        *x=S.data[S.top];
        return true;
    }
}

int main()
{
    /*操作代码*/
    
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值