有关C++中类定义程序的详解。
#include <iostream.h>
#define N 100
class CStack
{
public:
CStack() {top=0;cout<<"Hello";}
~CStack() {cout<<"Bye";}
void push(int i);
int pop();
private:
int stack[N];
int top;
};
void CStack::push(int i)
{
if(top==N)
{
cout<<"Overflow";
return;
}
else
{
top++;
stack[top]=i;
}
}
int CStack::pop()
{
int temp;
if(top==0)
{
cout<<"Underflow";
return 0;
}
else
{
temp=stack[top];
top--;
return temp;
}
}
void main()
{
CStack *ptr=new CStack;
ptr ->push(10);
ptr ->push(50);
cout<<ptr ->pop()<<" ";
cout<<"OK!"<<endl;
}
有人可以给我逐行解释下吗,没看明白。谢谢了。
追问: top-- 栈顶索引指向出栈元素的下一个元素
那么上一个元素就是top++?这是个C++自己规定的吗?
答案:#include <iostream.h> 导入头文件不用了吧
#define N 100 定义栈的大小(用数组模拟栈,也就是数组的长度)class CStack 定义CStack类
{
public:
CStack() {top=0;cout<<"Hello";} 构造函数,用于初始化
~CStack() {cout<<"Bye";} 析构函数,delete栈时调用的方法
void push(int i); 定义将int类型变量入栈的方法
int pop(); 定义出栈的方法
private:
int stack[N]; 定义一个N长度的数组,模拟栈
int top; 定义栈顶索引,入栈加1,出栈减1
};
void CStack::push(int i)
{
if(top==N) 判断栈是否满
{
cout<<"Overflow"; 如果栈满了,则提示
return;
}
else
{ 否则,将传入元素入栈,栈顶索引加1
top++; 栈顶索引+1
stack[top]=i; 入栈操作
}
}
int CStack::pop() 出栈
{
int temp; 定义临时变量,存储出栈元素
if(top==0) 判断栈是否为空
{
cout<<"Underflow"; 为空则提示
return 0;
}
else
{
temp=stack[top]; 取出栈顶元素
top--; 栈顶索引指向出栈元素的下一个元素
return temp; 返回出栈元素
}
}
void main()
{
CStack *ptr=new CStack; 新建栈
ptr ->push(10); 将元素10入栈
ptr ->push(50); 将元素50入栈
cout<<ptr ->pop()<<" "; 取出栈顶元素,也就是50
cout<<"OK!"<<endl; 。。。。。。。。。。
}
上一个:期待c或c++高手解决
下一个:求高手做程序,C++..