当前位置:编程学习 > C/C++ >>

有关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++..

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,