有关栈的C++程序带解释,刚刚学,望高手指点~~~~

1)设计一个能够存储整形数据的栈类IntStack,并满足如下要求:(1)有一个带参数的构造函数,该参数用于设置栈的初始大小。(2)具有析构函数。(3)具有Clear函数... 1)设计一个能够存储整形数据的栈类IntStack,并满足如下要求:
(1)有一个带参数的构造函数,该参数用于设置栈的初始大小。
(2)具有析构函数。
(3)具有Clear函数,它能够将栈置为空。
(4)具有IsEmpty函数,它能够判断栈是否为空。
(5)具有Length函数,它能够得到栈的元素个数。
(6)具有Push函数,能够将一个整形数据压入栈。
(7)具有Pop函数,能够将栈顶元素出栈。
2)实现一个main函数,在main函数中至少完成如下工作:
(1)定义一个IntStack类的对象,设置栈的初始大小为5。
(2)将5个整数压入栈。
(3)将栈的元素个数显示在屏幕上。
(4)将栈顶上的3个元素出栈,并分别显示这3个元素的值。
(5)清空栈。
展开
 我来答
无名状a
2010-10-09 · 超过31用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:71万
展开全部
/*
1)设计一个能够存储整形数据的栈类IntStack,并满足如下要求:
(1)有一个带参数的构造函数,该参数用于设置栈的初始大小。
(2)具有析构函数。
(3)具有Clear函数,它能够将栈置为空。
(4)具有IsEmpty函数,它能够判断栈是否为空。
(5)具有Length函数,它能够得到栈的元素个数。
(6)具有Push函数,能够将一个整形数据压入栈。
(7)具有Pop函数,能够将栈顶元素出栈。*/

class stack
{
public:
int max; //栈的大小
int sizeofstack; //栈中元素的个数
int *stackbuffer;//指向堆栈的指针(由于要求堆栈大小手动设置所以要动态分配内存)
stack(int size); //构造函数
int clear(); //清空堆栈
int IsEmpty();//判断堆栈是否为空
int Length();//返回堆栈中元素个数
int Push(int a);//将数据压入栈
int Pop();//弹出栈顶元素
~stack() //析构函数
{
while(stackbuffer)
{
free(stackbuffer);//遍历堆栈释放每一个元素
stackbuffer++;
}
}
};
stack::stack(int size)
{
stackbuffer = malloc(size * sizeof(int)); //动态申请空间
sizeofstack = 0;//初始化时堆栈元素个数为零
max = size; //
}
int stack::clear()
{
sizeofstack = 0;//将堆栈的个数设置为零即可
}
int stack::IsEmpty()//返回1表示堆栈为空,0为非空
{
if(sizeofstack == 0)
return 1;
else
return 0;
}
int stack::Length()
{
return sizeofstack;
}
int stack::Push(int a)//
{
if(sizeofstack < max)//如果堆栈满了则不能向堆栈中放入元素
{
stackbuffer[sizeofstack] = a;
sizeofstack ++;
return 1;
}
else
return 0;
}
int stack::Pop()
{
if(sizeofstack > 0)//如果堆栈为空则不能弹出元素
{
sizeofstack --;
return stackbuffer[sizeofstack]
}
else
return 0;
}

/*2)实现一个main函数,在main函数中至少完成如下工作:
(1)定义一个IntStack类的对象,设置栈的初始大小为5。
(2)将5个整数压入栈。
(3)将栈的元素个数显示在屏幕上。
(4)将栈顶上的3个元素出栈,并分别显示这3个元素的值。
(5)清空栈。
*/
void main()
{
stack stack_int(5);
for(int i = 0;i < 5; i++)
{
int input;
cin>>input;
if(!stack.push(input))//////////////////////
{
cout<<"输入错误"<<endle;
return 0;

}
cout<<stack.sizeofstack<<endle;
for(int i = 0;i < 3; i++)
{
if(stack.sizeofstack >= 1)//////////////////
{
cout<<stack.Pop()<<endle;
}
else
return ;
}
stack.clear();
}
不好意思,这个程序我没编译过,你自己试试,可能有错误,但问题应该不大,语法错误,自己试着改改,改不好给我留言
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式