顺序栈基本操作代码实现

#include<iostream>
using namespace std;
#include<stdlib.h>
#include<cstdlib> //顺序栈定义
#define OK 0
#define ERROR -1
#define OVERFLOW -2
#define MAXSIZE  100
typedef int Status;
typedef int SElemType;
typedef struct{SElemType *base;SElemType *top;int stacksize;
}SqStack;//算法1 顺序栈的初始化
Status InitStack(SqStack &S)
{// 构造一个空栈 S S.base=new int[MAXSIZE];if(!S.base) {cout<<"初始化失败"<<endl;return ERROR;}else{cout<<"初始化成功"<<endl;S.top=S.base;S.stacksize=0;return OK;   }}
//算法2 顺序栈的入栈
Status Push(SqStack &S,SElemType e)
{ // 插入元素e为新的栈顶元素if(S.top-S.base==MAXSIZE)return ERROR;*S.top++=e;return OK;
}
//算法3 顺序栈的出栈
Status Pop(SqStack &S,SElemType &e)
{// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORif(S.top==S.base)return ERROR;e=*--S.top;return OK;
}
//算法4 取顺序栈的栈顶元素
Status GetTop(SqStack S,SElemType &e)
{// 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERRORif(S.top==S.base)return ERROR;e=*S.top;return OK;
}
//算法5  判断栈是否为空
//若栈为空,输出栈为空 返回ERROR,不为空,输出不为空,返回OK
Status StackEmpty(SqStack &S)
{if (S.top == S.base)return OK;   elsereturn ERROR;
}
//算法6  取栈顶元素
Status GetTop(SqStack &S)
{if(S.top==S.base){//若栈为空,返回ERROR,并且输出栈为空,无栈顶元素cout<<"栈为空,无栈顶元素"<<endl;return ERROR;}else{//若栈不为空,返回OK,并且输出栈顶元素 cout<<"栈顶元素为"<<*(S.top)<<endl;return OK; }
}//算法7 清空栈
Status ClearStack(SqStack &S)
{S.top=S.base;cout<<"栈已清空"<<endl;return OK;
} //算法8  销毁栈
Status DestoryStack(SqStack &S)
{delete(S.base);S.base=NULL;S.top=NULL;S.stacksize=0;cout<<"栈已销毁"<<endl;return OK;
}//算法9  输出栈中所有元素,弹出所有元素
Status OutputStack(SqStack S)
{cout<<"栈中全部元素为:";for(int i=0;i<S.stacksize;i++){int m;Pop(S,m);cout<<m<<" ";}cout<<endl;return 0;
}
Status main()
{SqStack S;int choose=-1;cout<<"1.初始化栈"<<endl;cout<<"2.销毁栈"<<endl;cout<<"3.清空栈"<<endl;cout<<"4.栈判空"<<endl;cout<<"5.求栈长度"<<endl;cout<<"6.获取栈顶元素"<<endl; cout<<"7.插入一个元素"<<endl;cout<<"8.删除一个元素"<<endl;cout<<"9.输出所有元素"<<endl;cout<<"10.进制转换"<<endl;cout<<"0.退出"<<endl;while(choose!=0){cout<<"请输入选择的功能"<<endl;cin>>choose;switch(choose){case 1:InitStack(S);                               //1.初始化栈break;case 2:DestoryStack(S);                            //2.销毁栈 break;case 3:ClearStack(S);                               //3.清空栈元素 break;case 4:StackEmpty(S);                               //4.栈判空break;case 5:cout<<"栈长度为"<<S.stacksize<<endl;         //5.求栈长度 break;case 6:GetTop(S);                                   //6.求栈顶元素 break;case 7:cout<<"请输入进栈元素:"<<endl;              //7.插入一个元素,进栈 SElemType e;cin>>e;S.stacksize++; Push(S,e);break;case 8:                                                  //8.删除一个元素,出栈 cout<<endl<<"弹出的栈顶元素为:"<<endl;SElemType t;Pop(S,t);cout<<t<<" "<<endl;break;case 9:OutputStack(S);                                     //9.输出栈的所有元素 break;case 10:                                                //10.进制转换int N,d;SqStack S1;InitStack(S1);cout<<"请输入要转换的数:"<<endl;cin>>N;cout<<"请输入要转换的进制:"<<endl;cin>>d;while(N){Push(S1,N%d);N=N/d;}cout<<"转换后的数为:";while(StackEmpty(S1)){int e;Pop(S1,e);cout<<e;}cout<<endl;break;case 0:  break;  } }return 0;
}

顺序栈基本操作代码实现相关推荐

  1. 顺序栈基本操作(入栈和出栈)C语言详解

    #include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...

  2. 数据结构:顺序栈基本操作(入栈和出栈)C语言详解(转载)by解学武

    本文为解学武教程的免费章节 什么是顺序栈 顺序栈,即用顺序表实现栈存储结构.通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如 ...

  3. c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解

    顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...

  4. 1044: 顺序栈基本操作的实现

    题目描述 编程实现顺序栈的初始化.入栈.出栈.取栈顶元素和计算栈中元素个数等基本操作. 输入 第一行为入栈元素的个数: 第二行依次为入栈的元素: 出栈操作的次数n. 输出 输出n次出栈后的栈顶元素值. ...

  5. 3.1栈和队列——顺序栈基本操作的实现

    注意:以下内容均省略思路,只有代码.此内容为本人学习过程中的一些学习记录,如有错误,恳请各位指正.建议,末学将感激不尽! 目录 1.前言 2. 栈的特点(计算机二级考试中常考的知识点) 3. 栈的应用 ...

  6. 数据结构_顺序栈的代码实践

    #include <iostream> using namespace std; #define Maxsize 100//预先分配空间,这个数值根据实际情况预估确定 typedef st ...

  7. C语言顺序栈实现代码

    顺序栈 :它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作. sqstack.h  //顺序栈头文件(在内存中分配一段连续的存储空间存 ...

  8. c++顺序栈基本操作实现

    顺序栈定义 顺序栈是利用数组存储的栈,只能在栈顶进行出栈入栈,需要定义栈顶(top).栈底(base).栈长(stacksize) 注意: 表示空栈为 top==base: 表示栈满为 top-bas ...

  9. C++ class实现顺序栈(完整代码)

    代码如下: #include <iostream> using namespace std; typedef int ElemType;class SeqStack {public:Seq ...

  10. C语言 链式栈和顺序栈的实现

    1.简介: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...

最新文章

  1. 清理恶意插件提高上网速度
  2. Tomcat - ClassFormatException的解决方法
  3. python将数字转变为中文读法-python中将阿拉伯数字转换成中文的实现代码
  4. python数据库在哪_python可以用哪些数据库
  5. python学习HTML之CSS(2)
  6. JS中this的应用场景,再了解下apply、call和bind!
  7. android4.0.3 修改启动动画和开机声音
  8. 从起源到未来:能自己编程和改进的超人工智能会出现吗?
  9. 酷乐Emlog新春特别版coolappy2.2开源
  10. 1337. 矩阵中战斗力最弱的 K 行
  11. eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解
  12. python 遍历对象_Python遍历对象属性
  13. 服务器内存傲腾基本参数信息,服务器装傲腾内存
  14. matlab多久可以入门,5分钟入门matlab
  15. 企业wifi认证登录靠谱吗
  16. 9.ansible变量之fact
  17. C++标准模板(STL)- 算法 (std::adjacent_find)
  18. VG vs SS WE vs IM [20160815]
  19. HTML文档基本格式详细介绍
  20. Python循环语句_for_while循环的区别

热门文章

  1. UNIX环境高级编程——第十章信号
  2. 什么是Meta分析异质性,怎么处理Meta分析异质性?看完这篇就够了
  3. 顺着IP地址他们能找到我家吗?
  4. 苹果系统模拟器_全球首款 iOS 模拟器来袭:免费得一台苹果手机!
  5. Fortran入门教程(三)——输入输出
  6. aspose转pdf乱码问题
  7. bootdo增加验证码登陆
  8. 安装Selenium+Firefox+Firepath+Firebug
  9. HFSS天线设计实例_不同介质的BLE S11曲线
  10. eclipse环境变量配置步骤