📄 nohead_linstack.h
字号:
#ifndef NOHEAD_LINSTACK_H
#define NOHEAD_LINSTACK_H
template <class T> class nohead_LinStack;
template <class T>
class StackNode
{
friend class nohead_LinStack<T>;
private:
T data;
StackNode<T> *next;
public:
StackNode(const T& item,StackNode *ptrNext=NULL)
{
data=item;
next=ptrNext;
}
~StackNode(){};
};
template<class T>
class nohead_LinStack
{
private:
StackNode<T> *head;
int size;
public:
nohead_LinStack(void);
~nohead_LinStack(void);
void Push(const T& item);
T Pop(void);
T GetTop(void)const;
int NotEmpty(void) const;
};
template <class T>
nohead_LinStack<T>::nohead_LinStack()
{
head=NULL;
size=0;
}
template <class T>
nohead_LinStack<T>::~nohead_LinStack(void)
{
StackNode<T> *p,*q;
p=head;
while(p!=NULL)
{
q=p;
p=p->next;
delete q;
}
}
template <class T>
int nohead_LinStack<T>::NotEmpty(void) const
{
if(size!=0) return 1;
else return 0;
}
template <class T>
void nohead_LinStack<T>::Push(const T &item)
{
StackNode<T> *newNode=new StackNode<T>(item,head);
head=newNode;
size++;
}
template <class T>
T nohead_LinStack<T>::Pop(void)
{
if(size==0)
{
cout<<"The LinStack is empty!"<<endl;
exit(0);
}
StackNode<T> *p=head;
T data=p->data;
head=head->next;
delete p;
size--;
return data;
}
template <class T>
T nohead_LinStack<T>::GetTop(void)const
{
return head->data;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -