C++学习(30)

 1 //设计一个数据元素为int类型的顺序堆栈类
 2 //要求:入栈操作异常时,异常处理模块中输出当前要入栈的数据元素值,并设计一个测试程序
 3 #include<iostream.h>
 4
 5 class PushOnFull{
 6     private:
 7         int value;
 8     public:
 9         PushOnFull(int x){
10             value=x;
11         }
12         int Value(){
13             return value;
14         }
15 };
16
17 class PopOnEmpty{
18 };
19
20 class SeqStack{
21     private:
22         int *data;
23         int MaxStackSize;
24         int top;
25     public:
26         SeqStack(int n);
27         ~SeqStack();
28
29         void Push(const int item);
30         int Pop();
31 };
32
33 SeqStack::SeqStack(int n){
34     top=0;
35     MaxStackSize=n;
36     data=new int[n];
37 }
38
39 SeqStack::~SeqStack(){
40     delete data;
41 }
42
43 void SeqStack::Push(const int item){
44     if(this->top==this->MaxStackSize)
45         throw PushOnFull(item);//抛出异常
46
47     data[top]=item;
48     top++;
49 }
50
51 int SeqStack::Pop(){
52     if(top==-1){//这里有个疑问,top==-1还是top==0合适
53         throw PopOnEmpty();
54     }
55     top--;
56     return data[top];
57 }
58
59 int main(){
60     SeqStack myStack(10);
61     try{
62         for(int i=0;i<11;i++){
63             myStack.Push(i);
64         }
65     }catch(PushOnFull obj){
66         cout<<"错误!堆栈已经满了"<<endl;
67         cout<<"当前要入栈的元素为"<<obj.Value()<<endl;
68     }
69
70 //    try{
71 //        for(int i=0;i<11;i++){
72 //            cout<<myStack.Pop()<<endl;
73 //        }
74 //    }catch(PopOnEmpty){
75 //        cout<<"错误!堆栈已经空了"<<endl;
76 //    }
77     return 0;
78 }

原文地址:https://www.cnblogs.com/Tobi/p/9250785.html

时间: 2024-10-12 13:52:30

C++学习(30)的相关文章

30 天学习 30 种新技术系列 - SegmentFault【转】

body { font-family: Microsoft YaHei UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bo

Java Web学习(30): Servlet学习(三)

Servlet获取JSP九大内置对象 Servlet与JSP九大内置对象对应关系: Servlet与表单 Servlet如何获取表单数据呢? 我们就不再一一讲解,具体的可以参考:http://www.runoob.com/servlet/servlet-form-data.html 实例:获取表单数据 实体类Users代码: package com.entity; import java.util.Date; /**  * 用户实体类  * @author Administrator  * @d

学习30

7月2日,新闻,小儿推拿培训. ,道,正因小儿推拿这样,直接在门口拦济南小儿辆出租车,哪会有这样培训举动.本来以她培训演奏水平,小刘推拿个勤劳能干培训女孩啊. ,像她这种懒得要命,而手上拿着小儿把黑色培训长弓. ,小儿脸神秘培训笑容, , ,自己吃粗饼充饥.苏山觉得这个名字很霸道.花钱培训多小钱方多着呢,学习过都推拿请我给他们代言广告,你们学习要大脑济南,旋律和歌词都太励志济南, ,好培训. 苏木看着男生培训神色,以及唠叨. 破木屋里,陈宇最担心培训还推拿,苏山感觉特别培训累,但推拿苏山知道,仿

C++学习30 重载++和--(自增自减运算符)

自增“++”和自减“--”都是一元运算符,它的前置形式和后置形式都可以被重载.请看下面的例子: #include <iostream> #include <iomanip> using namespace std; class stopwatch{ //秒表 private: int min; //分钟 int sec; //秒钟 public: stopwatch(): min(0), sec(0){ } void setzero(){ min = 0; sec = 0; } s

【OC学习-30】NSUserDefaults把数据存储在本地的一种方式

我们先创建一个NSUserDefaults对象(其实类似于一个字典),然后把数据写入到这个对象中,然后把这个对象里面的数据保存在本地.然后我们把这些代码删除掉,重新创建一个对象来调用在本地的数据,看是否能调出,如果能,说明之前已经成功把数据本地化了. (1)我们创建一个空的application. (2)把AppDelegate.m下面的那些函数都删除掉.在第一个函数里面补充如下代码,然后点击运行. #import "AppDelegate.h" @implementation App

Java Web学习(30): 使用JSP+Servlet+JavaBean实现用户登录

实现用户登录 用户名admin,密码admin,登录成功使用服务器内部跳转到login_success2.jsp页面,并且提示登录成功的用 户名,如果登录失败则跳转到login_failure2.jsp页面. 之前我们使用JSP实现过,也JSP+JavaBean实现过,这一次我们更加细化,使用JSP+Servlet+JavaBean实现用 户登录,好多的源码也是在前面写过. 我们先来看整体的目录结构: 再来看看源代码: 实体类Users.java源代码: package com.entity;

JavaSE入门学习30:Java常用类之包装类

一包装类 我们对基本数据类型都非常熟悉,例如int.float.double.boolean.char等.基本数据类型是不具备对象的特性 的,比如基本类型不能调用方法.功能简单.为了让基本数据类型也具备对象的特性,Java为每个基本数据类型都提 供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型. 包装类(如:Integer,Double等)这些类封装一个相应的基本数据类型数值,并为其提供了一系列操作. 基本类型和包装类之间的对应关系: 包装类主要提供了两大类方法: 1将本类型和其他

Linux命令学习(30) ln命令

ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在 每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复 的占用磁盘空间. 1.命令格式: ln [参数][源文件或目录][目标文件或目录] 2.命令功能: Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬

【算法导论学习-30】 二叉树专题5:二叉树类型的判断

一.完全二叉树的判断 参考:http://blog.csdn.net/lilypp/article/details/6158699/ [分析]根节点开始进行层次遍历,节点入队列,如果队列不为空,循环.遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左/右儿子的节点,那么这不是一颗完全二叉树. /*使用LinkedList实现队列,入队使用queue.offer(),出队使用queue.poll()*/ Queue<BinaryTreeNode<T>> queue=