栈的顺序存储结构与操作
来源:互联网 发布:linux 磁盘使用情况 编辑:程序博客网 时间:2024/04/25 17:09
题目描述:
请你定义一个顺序栈,可以对顺序栈进行“将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素(不删除)”、“判断栈是否为空”、“清空栈”等操作。键盘输入一些命令,可以执行上述操作。本题中,顺序栈元素为字符,顺序栈的最大长度为10。
输入样例:
P1P2DGYTDYP3P4GE
输出样例:
21NoNoneYes4
输入描述:
各个命令以及相关数据的输入格式如下:
将某个元素入栈:P,接下来一行是要入栈的元素
弹出栈顶元素:D
取栈顶元素(不删除):G
清空栈:T
判断栈是否为空操作:Y
当输入的命令为E时,程序结束
输出描述:
当输入的命令为Y时,输出栈是否为空,如果栈为空输出Yes,栈不空输出No。
当输入命令G时,输出取出的栈顶元素
当输入命令D时,输出弹出的栈顶元素
注意:如果没有满足的元素,输出None,所有的元素均占一行
#include<iostream>
const int maxsize=100;
using namespace std;
class Seqstack
{
public:
Seqstack(){top=-1;}
~Seqstack(){}
void Push(char x);
char Pop();
char GetTop()
{
if(top!=-1)
return data[top];
return 0;
}
int Empty()
{
if(top==-1)
return 1;
else
return 0;
}
void Emptystack();
private:
char data[maxsize];
int top;
};
void Seqstack::Push(char x)
{
data[++top]=x;
}
char Seqstack::Pop()
{
char x;
x=data[top--];
return x;
}
void Seqstack::Emptystack()
{
top=-1;
}
int main()
{
Seqstack s;
char m;
char c;
while(cin>>c&&c!='E')
{
if(c=='P')
{
cin>>m;
s.Push(m);
}
if(c=='D')
{
if(!s.Empty())
{
cout<<s.Pop()<<endl;
}
else
{
cout<<"None"<<endl;
}
}
if(c=='Y')
{
if(s.Empty()==1)
{
cout<<"Yes"<<endl;
}
else
cout<<"No"<<endl;
}
if(c=='G')
{
if(!s.Empty())
{
cout<<s.GetTop()<<endl;
}
}
if(c=='T')
{
if(!s.Empty())
{
s.Emptystack();
}
}
}
return 0;
}
- 栈的顺序存储结构与操作
- 栈的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 队列的顺序存储结构与操作
- 线性表的顺序存储结构与操作
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 栈的顺序存储结构的相关操作(数据结构)
- 栈的基本操作(采用顺序存储结构)
- 栈的顺序存储结构和操作实现 数组实现
- 栈的简单操作(顺序结构存储)
- 栈的顺序存储结构操作及实现
- 线性表顺序存储结构的操作
- 线性表顺序存储结构的操作
- 栈的链式存储结构与操作
- 栈的链式存储结构与操作
- 栈的顺序存储结构
- 栈的顺序存储结构
- 栈的顺序存储结构
- Everyday a English
- Javascript笔记-定义对象的几种方式
- 集合的运算
- ubuntu 安装Matlab 解决显示中文乱码
- 201205012_oracle中minus的用法
- 栈的顺序存储结构与操作
- 一个复杂一点的单向链表
- 线上行为分析和建模原理
- 谷歌拼音输入法研究笔记
- ArcGIS Configuration Keywords含义简单讲解
- 设计模式——模版模式
- 计算机顶级会议Rankings && 英文投稿的一点经验
- 设计一个公共的class,通过它的接口可以对任何类型的数组排序
- 关于Oracle的exp和dblink转移数据效率比较以及DBLINK查询大字段方法