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

📄 stacktem.cpp

📁 c语言教程源码
💻 CPP
字号:
//这个程序在本书所带软盘中。文件名为STACKTEM.CPP
//这个程序利用类模板模拟堆栈。

#include <iostream.h>
#include <iomanip.h>

template<class T>
class Stack {
	public:
		Stack(int max_size);
		T push(T data);
		T pop(void);
		int empty(void)
		{
			return(is_empty); 
		}
		int full(void)
		{
			return(is_full); 
		}
	private:
		T *array;				//抽象数据类型数组
		int items;				//在堆栈中的数据数目
		int is_empty;			//栈空时为真
		int is_full;			//栈满时为真
		int size;				//堆栈可储存的最大容量
};

template<class T>				//编写构造函数
Stack<T> :: Stack(int max_size)
{
	array = new T[max_size];	//动态分配内存
	items = 0;
	is_empty = 1;
	is_full = 0;
	size = max_size;
}

template<class T>				//编写出栈成员子程序
T Stack<T> :: pop(void)
{
	if (empty())
		return(0);
	else
	{
		if (--items == 0)		//栈空时is_empty为真
			is_empty = 1;
		is_full = 0;
		return(array[items]);
	}
}

template<class T>				//编写入栈成员子程序
T Stack<T> :: push(T data)
{
	if (full())					//栈已满则返回0
		return(0);
	else
	{
		is_empty = 0;
		array[items++] = data;
		if (items == size)		//到达最大容量时is_full为真
			is_full = 1;
		return(data);
	}
}

void main(void)
{
	Stack<char> ch_stack(26);	//定义字符型堆栈,最大容量为26个字符
	Stack<int> int_stack(12);	//定义整数型堆栈,最大容量为12个整数
	Stack<float> f_stack(15);	//定义实数型堆栈,最大容量为15个实数

	for (char ch = 'A'; !ch_stack.full(); ch++)		//入栈
		ch_stack.push(ch);
	while (!ch_stack.empty())						//出栈
		cout << ch_stack.pop() << endl;
	cout << endl;

	for (int i = 0; !int_stack.full(); i++)			//入栈
		int_stack.push(i);
	while (!int_stack.empty())						//出栈
		cout << int_stack.pop() << endl;
	cout << endl;

	for (i = 0; ! f_stack.full(); i++)				//入栈
		f_stack.push(i * 3.141596);
	while (!f_stack.empty())						//出栈
		cout << setiosflags(ios::showpoint) << f_stack.pop() << endl;
}

/*这个程序运行后将显示如下输出结果:
Z
Y
X
W
V
U
T
S
R
Q
P
O
N
M
L
K
J
I
H
G
F
E
D
C
B
A

11
10
9
8
7
6
5
4
3
2
1
0

43.9823
40.8407
37.6992
34.5576
31.4160
28.2744
25.1328
21.9912
18.8496
15.7080
12.5664
9.42479
6.28319
3.14160
0.00000
*/

⌨️ 快捷键说明

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