序栈的实现

#include<iostream>
#include<string>
using namespace std;
#define MAX 10;
template <typename type>
class stack
{
public:
	stack();
	~stack();
	bool empty();//判断栈是否为空
	type pop();//将栈顶数据移除
	void push(type data);//将数据存入栈中
	type gettop();
	void showstack();
private:
	type* p;//保存数据
	int top;//用于计算栈内有多少个数据
	int max = 10;
};
template<typename type>
void stack<type>::showstack()
{
	for (int i = top; i >-1; i--)
		cout << *(p+i )<< "   ";
	cout << endl;
}

template<typename type>
type stack<type>::gettop()
{
	if (empty())
		cout << "栈已空!" << endl;
	else
		return *(p + top) ;
}


template<typename type>
stack<type>::stack()
{
	p = new type[max];
	top =-1;
	if (p == NULL)
		cout << "动态分配内存失败!" << endl;
}

template<typename type>
stack<type>::~stack()
{
	delete p;

}

template<typename type>
void stack<type>::push(type data)		//入栈
{
	if (top== max)
		cout << "栈满" << endl;
	else
	{ 	
		top++;
		*(p+top )= data;
	}
}
template<typename type>
bool stack<type>::empty()		//判断栈是否为空
{
	return p == NULL;
}
template <typename type>
type stack<type>::pop()			//出栈并返回栈顶元素
{
	if (empty())
		cout << "栈已空" << endl;
	else
	{
		type data = *(p + top);
		top--;
		return data;
	}
}
int main()
{
	stack<int> mystack;
		mystack.push(1);					//入栈
		cout<<mystack.gettop()<<endl;		//输出栈顶
		mystack.push(2);
		cout<<mystack.gettop()<<endl;
		mystack.push(3);
		cout<<mystack.gettop()<<endl;
		mystack.showstack();				//显示栈内所有元素
		cout << mystack.pop() << endl;		//出栈并输出其元素
		mystack.showstack();
		system("pause");
		return 0;
}
经过一天的学习终于把这个序栈写好了,
有问题请各位大佬指出。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭