下面程序定义栈类模板StackTemplate,创建栈对象存储斐波那契数列的前10项数值,并以后进先出的方式取出元素并输出,输出结果为:55 34 21 13 8 5 3 2 1 1。其中void push(const T& i)函数为添加元素、T pop()函数为取出栈顶元素,int fibonacci(int n)函数为计算斐波那契数列的第n项值。在计算斐波那契数列值、添加元素和取出元素的过程中要进行上溢(OverFlow)或者下溢(UnderFlow)的异常处理。请补充空白处的代码(每空1分)。 【样例输入】 无 【样例输出】 55 34 21 13 8 5 3 2 1 1 #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; enum ERROR{UnderFlow,OverFlow}; template<typename T> class StackTemplate { enum { ssize = 100 }; T stack[ssize]; int top; public: StackTemplate() : top(0) {} void push(const T& i) { if (top >= ssize) ; stack[top++] = i; } T pop() { if ( ) throw UnderFlow; return ; } int size() const{ return top; } }; int fibonacci(int n); int main() { { is; for(int i = 0; i < 10; i++) is.push(fibonacci(i)); for(int k = 0; k < 10; k++) cout <<setw(5)<< is.pop(); } catch( ERROR e ) { switch( ) { case OverFlow: exit(0); case UnderFlow: exit(0); } } catch(...) { } return 0; } int fibonacci(int n) { int sz = 100; int i; static int f[sz]; if (n >= sz) ; f[0] = f[1] = 1; for(i = 0; i < sz; i++) if(f[i] == 0) break; while(i <= n) { = f[i-1] + f[i-2]; i++; } return ; }
时间: 2024-02-10 09:33:40 浏览: 74
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈.pdf
if (top >= ssize)
throw OverFlow;
stack[top++] = i;
if (top <= 0)
throw UnderFlow;
return stack[--top];
switch (e) {
case OverFlow:
exit(0);
case UnderFlow:
exit(0);
}
f[sz-1] = 1;
for (i = sz-2; i >= 0; i--)
f[i] = f[i+1] + f[i+2];
return f[n];
阅读全文