C++关于栈的操作(附原题)
如题T1、编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型数组构成。先后作如下操作:...
如题 T1、编写一个类,实现简单的栈。栈中有以下操作:元素入栈,读出栈顶元素值,退栈,判断栈顶空否。如果栈溢出,程序终止。栈的数据成员由10个整型数组构成。先后作如下操作:
创建栈;
将10入栈;
将12入栈;
将14入栈;
读出并输出栈顶元素;
退栈;
读出并输出栈顶元素。
(速度啊,大侠帮帮忙,先谢过!) 展开
创建栈;
将10入栈;
将12入栈;
将14入栈;
读出并输出栈顶元素;
退栈;
读出并输出栈顶元素。
(速度啊,大侠帮帮忙,先谢过!) 展开
2个回答
展开全部
#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个整型数空间的栈。
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 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询