栈——顺序存储

c 复制代码
#include<stdio.h>
#define MaxSize 10
//栈的所有操作时间复杂度都是O(1) 

//定义
typedef struct{
    int data[MaxSize];
    int top;    //栈顶指针,永远指向栈顶元素 
}SqStack;

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

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

//判断栈满 
bool StackFull(SqStack S){
    if(S.top==MaxSize-1)
        return true;
    else 
        return false;
}

//入栈,先判断栈满 
bool Push(SqStack &S,int x){
    if(S.top==MaxSize-1)    //判断栈满
        return false;    
    
    S.top++;
    S.data[S.top]=x;
    printf("%d入栈成功\n",x);
    return true;
} 

//出栈,先判断栈空 
bool Pop(SqStack &S,int &x){
    if(S.top==-1)
        return false;
        
    x=S.data[S.top];
    S.top--;
    printf("%d出栈成功\n",x);
    return true;
}

//读取栈顶元素
bool GetTop(SqStack S,int &x){
    if(S.top==-1)
        return false;
        
    x=S.data[S.top];
    printf("栈顶元素是%d\n",x);
    return true;
} 
int main(){
    SqStack S;    //定义 
    InitStack(S);    //初始化 
    Push(S,1);    //入栈 
    Push(S,2);
    int x;        
    GetTop(S,x);     //读栈顶元素 
    Pop(S,x);        //出栈 
    GetTop(S,x);
} 
相关推荐
不爱吃炸鸡柳8 小时前
数据结构精讲:树 → 二叉树 → 堆 从入门到实战
开发语言·数据结构
Aurorar0rua8 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
良木生香10 小时前
【C++初阶】:STL——String从入门到应用完全指南(1)
c语言·开发语言·数据结构·c++·算法
XWalnut10 小时前
LeetCode刷题 day16
数据结构·算法·leetcode·链表·动态规划
寒秋花开曾相惜10 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.4 Y86-64异常&4.1.5 Y86-64程序)
开发语言·jvm·数据结构·笔记·学习
foundbug99912 小时前
基于混合整数规划的电池容量优化 - MATLAB实现
数据结构·算法·matlab
自我意识的多元宇宙12 小时前
树、森林——树与二叉树的应用(哈夫曼树的构造)
数据结构
水蓝烟雨13 小时前
2071. 你可以安排的最多任务数目
数据结构·链表
晓觉儿14 小时前
【GPLT】2026年第十一届团队程序设计天梯赛赛后题解(已写2h,存档中)
数据结构·c++·算法·深度优先·图论
流年如夢15 小时前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法