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;
    }

  • 相关阅读:
    WebRTC中的NetEQ
    VoIP基本原理
    NetEQ主要文件简介
    声纹识别
    杂记(2019.04.13)
    概率论基础复习
    机器学习复习:模型评估指标
    传统机器学习算法复习:逻辑回归、因子分解机和梯度提升树
    Tensorflow中循环神经网络及其Wrappers
    einsum:爱因斯坦求和约定
  • 原文地址:https://www.cnblogs.com/jiafeng1996/p/11297035.html
Copyright © 2011-2022 走看看