nohead_linstack.h
来自「不带头结点的链式堆栈类,1、 定义并实现不带头结点的链式堆栈类」· C头文件 代码 · 共 94 行
H
94 行
#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 + =
减小字号Ctrl + -
显示快捷键?