栈的顺序结构及实现:
#include<iostream>
using namespace std;
#define MAXSIZE 10
typedef int T;
/* 顺序栈类 */
class Stack{
T a[MAXSIZE];
int num;//已经放入的元素个数
public:
/*入栈*/
void push(const T& t) {
if(full())
throw "stack overflow";
a[num++]=t;
}
/*出栈*/
void pop() {
if(empty())
throw "empty stack";
num--;
}
/*取栈顶元素*/
T top() {
if(empty())
throw "no top stack";
return a[num-1];
}
/*判断栈是否为空,为空返回true*/
bool empty(){
return num==0;
}
/*判断栈是否已满,已满返回true*/
bool full() {
return num==MAXSIZE;
}
/*返回栈的长度*/
int size() {
return num;
}
/*返回栈的最大容量*/
int capacity() {return MAXSIZE;}
/*清空栈*/
void clear() {
num=0;
}
/*构造函数*/
Stack() : num(0) {}
};
int main()
{
try{
Stack s;
for(int i=0;i<10;i++)
s.push(i*5);
while(!s.empty()) {
cout << s.top() << ' ';
s.pop();
}
cout << endl;
for(int i=0;i<10;i++)
s.push(i);
cout << "full?" << s.full() << endl;
s.push(100);//有异常,下面语句不会执行
cout << "can't see this" << endl;
}catch(const char* e) {
cout << "exception" << endl;
}catch(...) {
cout << "unknown exception" << endl;
}
}