- 使用模板类,实现顺序栈
#include <iostream> #include <iomanip> using namespace std; template <typename T> class stack{ public: T *data; T top; T MAXsizeof; //操作函数 stack(int buf = 100); //栈的建立 bool push(const T a); //出栈 bool pop(); //进站 bool isempty(); //判空 bool isfull(); //判满 void show(); }; //栈的建立 template <typename T> stack<T>::stack(int buf){ MAXsizeof = buf; top = -1; data = new T[MAXsizeof]; if(data == NULL){ cout << "栈空间申请失败" << endl; } } //判空 template <typename T> bool stack<T>::isempty(){ if(top == -1){ return 1 ; }else{return 0;} } //判满 template <typename T> bool stack<T>::isfull(){ if( top == MAXsizeof-1 ){ return 1; }else {return 0;} } //出栈 template <typename T> bool stack<T>::pop(){ if(isempty() == 1){ return 0; } top--; } //进站 template <typename T> bool stack<T>::push(const T a){ if(isfull()==1){ return 0; } data[++top] = a; } //遍历 template <typename T> void stack<T>::show(){ if(isempty() == 1){ return; } for(int i=top;i>=0;i--){ cout << data[i] <<setw(5) ; } cout << endl; } int main() { stack <int>p; p.push(5); p.push(36); p.push(95); p.push(12); p.push(3); p.push(9); p.show(); return 0; }
写一个char类型的字符数组,对该数组访问越界时抛出异常,并做处理
#include <iostream>
using namespace std;
void fun(int a){
int i;
i=a;
char arr[128]={0};
if(i>128){
throw char (0);
}
}
int main()
{
int a=129;
try{
fun(a);
}
catch (char res){
if( res == 0){
cout << "超过数组的大小" << endl;
}
}
return 0;
}