顺序栈的实现

xiaoxiao2025-04-16  4

语言:C++

#include <iostream> using namespace std; #define MAXSIZE 100 typedef struct { int *base; int *top; }SqStack; //初始化 void InitStack(SqStack &S) { S.base=new int[MAXSIZE]; S.top=S.base; } //入栈 void Push(SqStack &S,int e) { //插入元素为e的新元素 if(S.top-S.base==MAXSIZE)cout<<"栈已满,入栈失败!"<<endl; *S.top++=e; cout<<"入栈成功!"<<endl; } //出栈 int Pop(SqStack &S,int &e) { //删除S的栈顶元素,用e返回其值 if(S.top==S.base)cout<<"栈为空,取值失败!"<<endl; e=*--S.top; cout<<"出栈成功!"<<endl; return e; } //取栈长 int SqListSize(SqStack S) { //返回栈长度 return S.top-S.base; } //输出 void display(SqStack S) { while(S.top!=S.base) { cout<<*(S.top-1)<<endl; S.top--; } } int main() { SqStack S;int x;int e;int i; cout<<"欢迎使用顺序栈!功能如下:"<<endl; cout<<"--------------------------"<<endl; cout<<"[1].初始化 [2].入栈"<<endl; cout<<"[3].出栈 [4].取栈长"<<endl; cout<<"[5].输出栈 [0].退出"<<endl; cout<<"--------------------------"<<endl; cout<<"请输入:";cin>>x; while(x) { switch(x) { case 1:InitStack(S);break; case 2:cout<<"请输入要入栈的元素:";cin>>e;Push(S,e);break; case 3:i=Pop(S,e);cout<<"出栈元素为:"<<i<<endl;break; case 4:i=SqListSize(S);cout<<"当前栈长为:"<<i<<endl;break; case 5:cout<<"当前栈为:"<<endl;display(S);break; case 0:break; default:cout<<"您的选择错误,请重新输入!"<<endl; } cout<<"请选择您需要的功能:";cin>>x; } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5028392.html

最新回复(0)