📄 stack.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 + -