顺序栈的简单操作

根据老师的代码进行改编

#include<iostream>
#include<cstdlib>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
typedef struct{
      ElemType *base;
      ElemType *top;
      int stacksize;
}SqStack;

Status InitStack(SqStack &S){ //建立一个空栈 
        S.base=new ElemType[MAXSIZE];
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base;
        S.stacksize=MAXSIZE;
     return OK;
}

Status Push(SqStack &S,ElemType &e){ //将数字压入空栈 
    if(S.top-S.base==MAXSIZE)
        return ERROR;
    *(S.top++)=e;
    return OK;
}

Status Pop(SqStack &S,ElemType &e){//将栈顶元素删除 
   if(S.top==S.base)
        return ERROR;
   e=*(--S.top);
   return OK;
}

Status GetTop(SqStack &S,ElemType &e){//获取栈顶元素 
      if(S.top==S.base)
          return ERROR;
      e=*(S.top-1);
      return OK;
}
int main(){
     SqStack s;
     ElemType n;
     ElemType m;
     int i,j,k,t;
     cout<<"进栈的次序依次为:"<<endl;
     if(InitStack(s)==OK)
     for(i=1;i<=12;i++){
        Push(s,i);
        cout<<i<<" ";
     }
     cout<<"栈顶出栈次序依次为:"<<endl;
     while(GetTop(s,n)==OK){
         cout<<n<<" ";
         Pop(s,m);
     } 
return 0;
} 


posted @   wojiaohuangyu  阅读(5)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示