zoukankan      html  css  js  c++  java
  • 2.1 顺序栈

    #include <stdio.h>
    #include <stdlib.h>
    #define MaxSize 50
    
    // 顺序栈同数组,下标是从0开始,第一个元素占据0号位置,栈空为top=-1,栈满是MaxSize-1
    // 记住顺序存储的存储结构。注意有top标记和元素数组
    // 关键操作:1.判空(S->top=-1),判满(top=MaxSize-1);2.S->data[++S->top]=e
    // 一般return的原则:先return 0再return 1. 判空的return 空则return 1 满则return 0
    // 口诀:判空就是空为1 return 1
    
    typedef struct{
        int data[MaxSize];            // 顺序栈,是个数组
        int top;
    }SqStack;
    
    //初始化
    void InitStack(SqStack *S){
        S->top=-1;
    }
    
    int StackEmpty(SqStack *S){
        if(S->top==-1) return 1;      // 确实是空栈
        else
        return 0;
    }
    
    //进栈
    int Push(SqStack *S,int e){
        if(S->top==MaxSize-1) return 0;
            S->data[++S->top]=e;      // 注意顺序,要是先加再执行
        return 1;
    }
    // 出栈
    int Pop(SqStack *S,int *e){
        if(StackEmpty(S))             // 空是返回的-1错误信息,非空才执行下面
            return 0;
        else
            *e=S->data[S->top--];
        return 1;
    }
    
    // 读取栈顶元素,同Pop只是不改变top的计数
    int GetTop(SqStack *S,int *e){
        if(StackEmpty(S))             // 空是返回的-1错误信息,非空才执行下面
            return 0;
        else
            *e=S->data[S->top];
        return 1;
    }
    
    int main(){
        int e1,e2,e3;
        SqStack S;
        InitStack(&S);
    
        Push(&S,1);
        Push(&S,2);
        Push(&S,3);
        Push(&S,4);
        Push(&S,5);
        
        Pop(&S,&e1);        printf("Pop:%d
    ",e1);
        GetTop(&S,&e2);     printf("GetTop:%d
    ",e2);
    }
  • 相关阅读:
    Unity学习
    C#文件操作
    Unity3D XLua热更新流程
    Unity编辑器扩展
    Unity性能优化
    Unity热更新 xLua
    Unity热更新 AssetBundle
    Quickcocos从安装到打包
    EasyTouch5插件使用 EasyTouch手势检测功能
    PHP CURL HTTPS内存泄露问题
  • 原文地址:https://www.cnblogs.com/Alexagender/p/10806251.html
Copyright © 2011-2022 走看看