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

📄 stack.h

📁 数学表达式计算器数学表达式计算器数学表达式计算器
💻 H
字号:
#include"iostream"
#include"OnelinkNode.h"
using namespace std;

template<class T>
class Stack
{
	public:
		OnelinkNode<T> *top;

		Stack();
		~Stack();
		bool isEmpty()const;
		bool push(T& k);
		T pop();
		T get();

		friend ostream& operator<<(ostream& out,Stack<T> &s);
};


//构造函数
template<class T>
Stack<T>::Stack()
{
	top=NULL;
}


//析构函数
template <class T>
Stack<T>::~Stack()
{
	OnelinkNode<T> *p=top,*q;
	while(p!=NULL)
	{
		q=p;
		p=p->next;
		delete q;
	}
	top=NULL;
}


//判空
template<class T>
bool Stack<T>::isEmpty()const
{
	return top==NULL;
}


//入栈
template<class T>
bool Stack<T>::push(T& k)
{
	OnelinkNode<T> *q=new OnelinkNode<T>(k);
	q->next=top;
	top=q;
	return true;
}


//出栈
template<class T>
T Stack<T>::pop()
{
	T k;
	if(!isEmpty())
	{
		k=top->data;
		OnelinkNode<T> *p=top;
		top=top->next;
		delete p;
	}
	return k;
}


//获得栈顶元素
template<class T>
T Stack<T>::get()
{
	if(!isEmpty())
		return top->data;
	else 
		return 0;
}


//输出符重载
template<class T>
ostream& operator<<(ostream& out,Stack<T> &s)
{
	cout<<"链式栈: ";
	OnelinkNode<T> *p=s.top;
	while(p!=NULL)
	{
		cout<<p->data<<" ";
		p=p->next;
	}
	cout<<endl;
	return out;
}

⌨️ 快捷键说明

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