zoukankan      html  css  js  c++  java
  • 栈的动态顺序存储基本操作 一(初始化,进栈,访问栈顶元素,出栈)

    #include<stdio.h>
    #include<malloc.h>
    #define MAXSIZE 20
    #define ElemType int
    typedef struct SQtack{//动态顺序存储结构,存储空间随栈的大小变化
     ElemType *top,*bottom;//定义栈顶和栈底
     int stacksize;//栈的存储空间大小
    }SQtack;


    void Init_stack(SQtack &S){//初始化栈
     S.bottom=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
     if(!S.bottom) printf("未申请到存储空间 ");
     S.top=S.bottom; //初始化栈,使栈顶与栈底指向同一位置
     S.stacksize=MAXSIZE;
    }


    void Push_stack(SQtack &S){
     ElemType e;
     printf("输入入栈元素: ");
     scanf("%d",&e);
     while(e!=-1){
      if(S.top-S.bottom==S.stacksize-1){
       printf("栈满");//此处用top-bottom=stacksize-1
       //判断栈是否已满,浪费了栈顶一个空间,
      }else{
      //此处采用先放元素再加加的方式
       *S.top=e;
       S.top++;
       scanf("%d",&e);
         }
     }
    }


    void Get_top(SQtack &S){//访问栈顶元素
     ElemType top_e;
     if(S.bottom!=S.top){
      top_e=*(S.top-1);
      printf("%d:栈顶 ",top_e);
     }
    }


    void Pop_stack(SQtack &S){
     ElemType a;
     if(S.top==S.bottom){
      printf("空栈");
     }else{
      S.top--;//先减减,再出栈
      a=*S.top;
      printf("%d:出栈 ",a);
     }
    }


    int main(){
     SQtack S;
     Init_stack(S); //初始化,栈
     Push_stack(S);//入栈
     Get_top(S);//访问栈顶元素,还在栈中 
     Pop_stack(S); //栈顶元素出栈
     Get_top(S);
     return 0;
    }

  • 相关阅读:
    链接服务器创建
    线性RAM地址非线性映射转换充分应用RAM地址空间TFT液晶驱动
    FPGA跨时钟域同步,亚稳态等
    Go常见的坑
    VSCode+PicGo+Gitee实现高效markdown图床
    友链
    linux 命令行使用codeql
    Linux 多进程服务配置 systemd
    列表中重复元素的个数
    起不出来题目了呜呜
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/11297035.html
Copyright © 2011-2022 走看看