C++关于栈的操作(附原题)

如题T1、编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型数组构成。先后作如下操作:... 如题 T1、编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型数组构成。先后作如下操作:
创建栈;
将10入栈;
将12入栈;
将14入栈;
读出并输出栈顶元素;
退栈;
读出并输出栈顶元素。

(速度啊,大侠帮帮忙,先谢过!)
展开
 我来答
huifeng00
2009-12-13 · TA获得超过5233个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:700万
展开全部
#include<iostream>
using namespace std;

class Stack
{
public:
Stack()
{
top=-1;
}
bool push(int n)//压栈
{
if(!isfull())
data[++top]=n;
else
return false;
return true;
}
bool pop()//退栈
{
if(!isempty())
top--;
else
return false;
return true;
}
int gettop()//得到栈顶元素
{
return data[top];
}
bool isempty()//判断是否为空
{
return top==-1?true:false;
}
bool isfull()//判断是否已满
{
return top==9?true:false;
}
private:
int data[10];
int top;
};

int main()
{
Stack s;//建立一个栈
if(!s.push(10))//将10入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
if(!s.push(12))//将12入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
if(!s.push(14))//将14入栈;
{
cout<<"栈溢出"<<endl;
return 0;
}
cout<<s.gettop()<<endl;//读出并输出栈顶元素;
s.pop();//退栈
cout<<s.gettop()<<endl;//读出并输出栈顶元素;
}
如上类,这是可以存储10个整型数空间的栈。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
yl62803112
2009-12-13 · TA获得超过416个赞
知道小有建树答主
回答量:694
采纳率:100%
帮助的人:206万
展开全部
#include <iostream>
#include <cstdlib>
using namespace std;

const int STACKINCREMENT=10;
template <class Type>
class SeqStack
{
private:
int top;
Type *elem;
int maxSize;
public:
SeqStack(int size);
~SeqStack() {delete [] elem;}

bool IsStackEmpty() const
{return top==-1;}
void SeqStackClear(){top=-1;}
int SeqStackLength(){return top+1;}
int IsStackFull(){return maxSize-1;}

Type & GetTop();
void StackPush(Type &e);
Type & StackPop();
};

template <class Type>
SeqStack<Type>::SeqStack(int size):top(-1),maxSize(size)
{
elem=new Type[maxSize];
if(!elem){cout<<"内存分配失败!"; exit(0);}
}

template <class Type>
Type & SeqStack<Type>::GetTop()
{
if(IsStackEmpty()){cout<<"栈空!";exit(0);}
return elem[top];
}

template <class Type>
Type & SeqStack<Type>::StackPop()
{
if(IsStackEmpty()){cout<<"栈空!";exit(0);}

return elem[top--];
}

template <class Type>
void SeqStack<Type>::StackPush(Type &e)
{
if(IsStackFull())
{
Type *p=new Type[maxSize+STACKINCREMENT];
if(!p){cout<<"内存溢出!";exit(0);}

for(int j=0;j<maxSize;j++) p[j]=elem[j];
delete [] elem;
elem=p;
p=NULL;
maxSize+=STACKINCREMENT;
}
elem[++top]=e;
}

int main()
{
SeqStack<int> stack(10);
stack.StackPush(10);
cout<<"栈顶元素为"<<stack.GetTop()<<endl;
stack.StackPush(12);
cout<<"栈顶元素为"<<stack.GetTop()<<endl;
stack.StackPush(14);
cout<<"栈顶元素为"<<stack.GetTop()<<endl;
cout<<"退栈"<<endl;
while (!stack.IsEmpty)
{
cout<<"栈顶元素为"<<stack.GetTop()<<endl;
stack.StackPop();
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式