栈和队列相关

栈的顺序存储结构

复制代码
#define maxsize 50
typedef int ElemType;
typedef struct {
    ElemType data[maxsize];
    int top;
}SqStack;

顺序栈的基本算法

初始化栈

cpp 复制代码
void InitStack(SqStack *s){
    s.top=-1;
    return;
}

判断栈空

cpp 复制代码
bool IsEmptyStack(SqStack *s){
    if(s.top==-1){
        return true;
    }else{
        return false;
    }
}

进栈

cpp 复制代码
bool Push(SqStack *s,ElemType e){
    if(s.top==maxsize-1){           //栈满
        return false;
    }else{
        s.top++;
        s.data[s.top]=e;
        return true;
    }
}

出栈

cpp 复制代码
bool Pop(SqStack *s,ElemType &e){
    if(IsEmptyStack(s)){           //栈空
        return false;
    }else{
        e=s.data[s.top];
        s.top--;
        return true;
    }
}

读栈顶元素

cpp 复制代码
bool GetTop(SqStack *S,ElemType &e){
    if(IsEmptyStack(s)){           //栈空
        return false;
    }else{
        e=s.data[s.top];
        return true;
    }
}

总代码

cpp 复制代码
#include <stdio.h>

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

void InitStack(SqStack *s){
    s.top=-1;
    return;
}

bool IsEmptyStack(SqStack *s){
    if(s.top==-1){
        return true;
    }else{
        return false;
    }
}

bool Push(SqStack *s,ElemType e){
    if(s.top==maxsize-1){           //栈满
        return false;
    }else{
        s.top++;
        s.data[s.top]=e;
        return true;
    }
}

bool Pop(SqStack *s,ElemType &e){
    if(IsEmptyStack(s)){           //栈空
        return false;
    }else{
        e=s.data[s.top];
        s.top--;
        return true;
    }
}

bool GetTop(SqStack *S,ElemType &e){
    if(IsEmptyStack(s)){           //栈空
        return false;
    }else{
        e=s.data[s.top];
        return true;
    }
}
int main() {
    return 0;
}
相关推荐
嘉友25 分钟前
Redis zset数据结构以及时间复杂度总结(源码)
数据结构·数据库·redis·后端
蒙奇D索大1 小时前
【数据结构】图解图论:度、路径、连通性,五大概念一网打尽
数据结构·考研·算法·图论·改行学it
姜行运3 小时前
数据结构【链表】
c语言·开发语言·数据结构·链表
egoist20235 小时前
【C++指南】一文总结C++二叉搜索树
开发语言·数据结构·c++·c++11·二叉搜索树
lidashent5 小时前
数据结构和算法——汉诺塔问题
数据结构·算法
ん贤7 小时前
2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题&题解)(C++/Java题解)
java·c语言·数据结构·c++·算法·蓝桥杯
我的sun&shine14 小时前
高级数据结构03RB树
数据结构·b树
_GR16 小时前
2022年蓝桥杯第十三届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·蓝桥杯·动态规划
快来卷java17 小时前
常见集合篇(二)数组、ArrayList与链表:原理、源码及业务场景深度解析
java·数据结构·链表·maven
Stardep17 小时前
算法学习11——滑动窗口——最大连续1的个数
数据结构·c++·学习·算法·leetcode·动态规划·牛客网