⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stktmplt.cpp

📁 C++的常用算法
💻 CPP
字号:
//这个程序在本书所带软盘中。文件名为STKTMPLT.CPP
//这个程序利用直接方式编写类模板来模拟处理两种不同数据类型的堆栈的操作。

#include <iostream.h>
#include <stdlib.h>

const int MAX = 100;			//定义堆栈可以处理的最大数据量

template <class T>				//定义类模板
class Stack {
	private:
		T st[MAX];				//stack为抽象数据类型数组
		int top;
	public:
		Stack(void);			//构造函数
		void push(T var);		//成员子程序直接编写方式
		T pop(void);			//成员子程序直接编写方式
};

template <class T>
Stack<T> :: Stack(void)			//编写构造函数
{
	top = -1;					//初始化
}

template <class T>
void Stack<T> :: push(T var)	//实现入栈成员子程序
{
	if (top < MAX)
		st[++top] = var;
	else {
		cout << "栈已满!" << endl;
		exit(0);
	}
}

template <class T>
T Stack<T> :: pop(void)			//实现出栈成员子程序
{
	if (top == -1) {
		cout << "栈已空!" <<endl;
		exit(0);
	}
	else return st[top--]; 
}

void main()
{	
	Stack<float> fstack;		//定义数据类型为实数的对象
	fstack.push(1111.1);		//入栈
	fstack.push(2222.2);
	fstack.push(3333.3);
	cout << "1: " << fstack.pop() << endl;	//出栈
	cout << "2: " << fstack.pop() << endl;
	cout << "3: " << fstack.pop() << endl;
	cout << endl;

	Stack<long> lstack;			//定义数据类型为长整型的对象
	lstack.push(111111111L);	//入栈
	lstack.push(222222222L);
	lstack.push(333333333L);
	cout << "1: " << lstack.pop() << endl;  //出栈
	cout << "2: " << lstack.pop() << endl;
	cout << "3: " << lstack.pop() << endl;
}

/*这个程序运行后将显示如下输出结果:
1: 3333.3
2: 2222.2
3: 1111.1

1: 333333333
2: 222222222
3: 111111111
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -