📄 b_11_2.cpp
字号:
#include "stdafx.h"
#include <iostream>
#include <string>
#include<iomanip>
#include<fstream>
using namespace std;
template <class Type>
class Stack {
public:
Stack(int size);
~Stack()
{ delete [] stack;}
void push(Type i);
Type pop();
private:
int tos,length;
Type *stack;
};
template <class Type>
Stack <Type>::Stack(int size)
{ stack = new Type[size];
if (!stack)
{ cout << "对不起,无法创建栈!"<<endl;
exit(-1);
}
length = size;
tos = 0;
}
template <class Type>
void Stack <Type>::push(Type i)
{ if (tos == length)
{ cout << "对不起,栈已经满了!"<<endl;
return;
}
stack[tos++]=i;
}
template <class Type>
Type Stack <Type>::pop()
{ if (tos == 0)
{ cout << "对不起,栈已经空了!"<<endl;
return 0;
}
return stack[--tos];
}
void main()
{ Stack <int> a(8);
Stack <double> b(8);
Stack <string> c(8);
cout << "依次压入栈内的数:"<<endl;
for (int i=0;i<8;i++)
{ cout <<setw(5)<<i;
a.push(i);
}
cout << endl<<"依次弹出栈外的数:"<<endl;
for (int i=0;i<8;i++)
cout << setw(5)<< a.pop();
double doub[4]={3.12,32.68,1.11,32.34};
cout <<endl<<"依次压入栈内的浮点数:"<<endl;
for (i=0;i<3;i++)
{ cout <<setw(10)<<doub[i];
b.push(doub[i]);
}
cout << endl<<"依次弹出栈外的浮点数:"<<endl;
for (i=0;i<3;i++)
cout << setw(10)<< b.pop();
string str[3]={"hello","good","morning"};
cout <<endl<<"依次压入栈内的字符串:"<<endl;
for (int i=0;i<3;i++)
{ cout <<setw(10)<<str[i];
c.push(str[i]);
}
cout << endl<<"依次弹出栈外的字符串:"<<endl;
for (int i=0;i<3;i++)
cout << setw(10)<< c.pop();
cin.get(); //等待结束,以便调测程序,可以删除
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -