顺序栈基本操作代码实现
顺序栈基本操作代码实现
#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;
}
顺序栈基本操作代码实现相关推荐
- 顺序栈基本操作(入栈和出栈)C语言详解
#include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...
- 数据结构:顺序栈基本操作(入栈和出栈)C语言详解(转载)by解学武
本文为解学武教程的免费章节 什么是顺序栈 顺序栈,即用顺序表实现栈存储结构.通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如 ...
- c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解
顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...
- 1044: 顺序栈基本操作的实现
题目描述 编程实现顺序栈的初始化.入栈.出栈.取栈顶元素和计算栈中元素个数等基本操作. 输入 第一行为入栈元素的个数: 第二行依次为入栈的元素: 出栈操作的次数n. 输出 输出n次出栈后的栈顶元素值. ...
- 3.1栈和队列——顺序栈基本操作的实现
注意:以下内容均省略思路,只有代码.此内容为本人学习过程中的一些学习记录,如有错误,恳请各位指正.建议,末学将感激不尽! 目录 1.前言 2. 栈的特点(计算机二级考试中常考的知识点) 3. 栈的应用 ...
- 数据结构_顺序栈的代码实践
#include <iostream> using namespace std; #define Maxsize 100//预先分配空间,这个数值根据实际情况预估确定 typedef st ...
- C语言顺序栈实现代码
顺序栈 :它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作. sqstack.h //顺序栈头文件(在内存中分配一段连续的存储空间存 ...
- c++顺序栈基本操作实现
顺序栈定义 顺序栈是利用数组存储的栈,只能在栈顶进行出栈入栈,需要定义栈顶(top).栈底(base).栈长(stacksize) 注意: 表示空栈为 top==base: 表示栈满为 top-bas ...
- C++ class实现顺序栈(完整代码)
代码如下: #include <iostream> using namespace std; typedef int ElemType;class SeqStack {public:Seq ...
- C语言 链式栈和顺序栈的实现
1.简介: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...
最新文章
- 清理恶意插件提高上网速度
- Tomcat - ClassFormatException的解决方法
- python将数字转变为中文读法-python中将阿拉伯数字转换成中文的实现代码
- python数据库在哪_python可以用哪些数据库
- python学习HTML之CSS(2)
- JS中this的应用场景,再了解下apply、call和bind!
- android4.0.3 修改启动动画和开机声音
- 从起源到未来:能自己编程和改进的超人工智能会出现吗?
- 酷乐Emlog新春特别版coolappy2.2开源
- 1337. 矩阵中战斗力最弱的 K 行
- eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解
- python 遍历对象_Python遍历对象属性
- 服务器内存傲腾基本参数信息,服务器装傲腾内存
- matlab多久可以入门,5分钟入门matlab
- 企业wifi认证登录靠谱吗
- 9.ansible变量之fact
- C++标准模板(STL)- 算法 (std::adjacent_find)
- VG vs SS WE vs IM [20160815]
- HTML文档基本格式详细介绍
- Python循环语句_for_while循环的区别