面向对象编程技术(作业题三)

原创 2006年05月21日 21:11:00

#include <iostream>

using namespace std;

template<typename T>
class CStack
{
protected:
 T* m_pData;
 int m_nLength;  // 栈长度
 int m_nCount;  // 当前元素个数

public:
 CStack(int nSize);
 ~CStack();
 void Push(const T& val); // 入栈操作
 void Pop();     // 出栈操作
 const T& Top() const;  // 获取栈顶元素
};

template<typename T>
CStack<T>::CStack(int nSize)
{
 m_pData = new T[nSize];
 if(!m_pData)
    {
        cout<<"分配内存失败。"<<endl;
        exit(1);
    }

 m_nLength = nSize;
 m_nCount = 0;
}

template<typename T>
CStack<T>::~CStack()
{
 if (m_pData)
 {
  delete[] m_pData;
  m_pData = NULL;
 }
}

template<typename T>
void CStack<T>::Push(const T& val)
{
 if (m_nCount == m_nLength)
 {
  cout<<"堆栈已满。"<<endl;
  return;
 }
 m_pData[m_nCount] = val;
 m_nCount++;
}

template<typename T>
void CStack<T>::Pop()
{
 if (m_nCount == 0)
 {
  cout<<"堆栈已空。"<<endl;
  return;
 }
 m_nCount--;
}

template<typename T>
const T&  CStack<T>::Top() const
{
 if (m_nCount == 0)
 {
  cout<<"堆栈已空。"<<endl;
  return 0;
 }

 return m_pData[m_nCount-1];
}


///////////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
 CStack<char> stkChar(3);
 CStack<double> stkDouble(3);
 char chCurrent;
 double dCurrent;

 // 初始化
 stkChar.Push('a');
 stkChar.Push('b');
 stkDouble.Push(1.2);
 stkDouble.Push(2.4);

 // 字符堆栈
 chCurrent = stkChar.Top();
 cout<<chCurrent<<endl;
 stkChar.Pop();
 chCurrent = stkChar.Top();
 cout<<chCurrent<<endl;
 stkChar.Pop();
 stkChar.Top();  // 堆栈已空

 // 浮点数堆栈
 dCurrent = stkDouble.Top();
 cout<<dCurrent<<endl;
 stkDouble.Pop();
 dCurrent = stkDouble.Top();
 cout<<dCurrent<<endl;
 stkDouble.Pop();
 stkDouble.Pop();  // 堆栈已空

 return 0;
}

习题43 基本的面向对象分析和设计

Python OOP第一步,写一个简单游戏。
  • qq_27469517
  • qq_27469517
  • 2016年11月19日 16:20
  • 375

面向对象编程的几个关键概念继承、多态、组合

一、继承、接口与多态的相关问题:1、 继承的作用?好处?坏处?继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继程java.lang.Object类得到的。继承而得到的类称为子类,被...
  • u010159842
  • u010159842
  • 2015年06月17日 22:21
  • 1226

Java面向对象程序设计 java实验报告第三个

RunYear.java  输出1900到2000年之间的所有润年
  • puhaiyang
  • puhaiyang
  • 2014年10月01日 13:16
  • 1128

面向对象的英文全称叫做Object Oriented

面向对象的英文全称叫做Object Oriented,简称OO。OO其实包括OOA(Object Oriented Analysis,面向对象分析)、OOD(Object Oriented Desig...
  • wsnbjj
  • wsnbjj
  • 2014年11月24日 13:03
  • 1214

面向对象的三大特征

1. 封装 封装是把描述一类事物的成员变量(属性)和方法(功能)放在一起的过程。 (1)在封装的过程中需要设定类变量(群体变量),使用static。 static修饰的变量叫静态成员变量...
  • qq_28017393
  • qq_28017393
  • 2016年11月28日 14:15
  • 70

Java学习系列(十九)Java面向对象之数据库编程

JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范。 Java数据...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2013年11月26日 15:46
  • 2220

面向对象程序设计与结构化方法的比较

1.结构化方法遵循的基本原则 结构化方法的基本思想就是将待解决的问题看作一个系统从而用系统科学的思想方法来分析和解决问题结构化方法遵循以下基本原则 (1)抽象原则 抽象原则是一切系统科学...
  • u010555688
  • u010555688
  • 2014年05月04日 16:28
  • 1546

Java基础:面向对象三大特征、五大原则

面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特...
  • jiq408694711
  • jiq408694711
  • 2015年06月22日 13:57
  • 5613

面向对象的三个基本元素,五个基本原则

三个基本元素: 1. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护...
  • Lee_Xq_
  • Lee_Xq_
  • 2014年09月02日 01:02
  • 769

java 实验三 面向对象程序设计(无脑实验系列)

1.三角形、梯形和圆形的类封装 ²  实验要求: 编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下: a)...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016年05月23日 08:32
  • 1078
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象编程技术(作业题三)
举报原因:
原因补充:

(最多只允许输入30个字)