栈
栈是一种特殊的线性表,主要是先进后出。
主要函数包括:压栈、出栈、清空栈、栈长度
主要代码如下:
#include <iostream>
using namespace std;
template<class T>
class sstackNode
{
public:
sstackNode(){next=0;}
T data;
sstackNode<T> *next;
};
template <class T>
class Mystack
{
public:
Mystack();//初始化
unsigned int MystackLength();//返回栈的长度
void push(T x);//入栈
void pop();//出栈
T top();//获取栈顶数据
void clear();//清空栈
bool isEmpty();//判断是否为空
private:
protected:
unsigned int stacklength;
sstackNode <T> *node;
sstackNode <T> *headnode;
};
template <class T>
Mystack<T>::Mystack()//初始化
{
stacklength =0;
headnode=NULL;
}
template <class T>
unsigned int Mystack<T>::MystackLength()//返回栈的长度
{
return stacklength;
}
template <class T>
void Mystack<T>::push(T x)//入栈
{
node=new sstackNode<T>();
node->data=x;
if (headnode==NULL)
{
node->next=NULL;
}
else
{
node->next=headnode;
}
headnode=node;
stacklength++;
}
template <class T>
void Mystack<T>::pop()//出栈
{
if (headnode==NULL)
{
return;
}
else
{
if (headnode->next=NULL)
{
delete(headnode);
headnode=NULL;
}
else
{
node=headnode;
headnode=node->next;
delete(node);
node=NULL;
}
stacklength--;
}
}
template <class T>
T Mystack<T>::top()//获取栈顶数据
{
return(headnode->data);
}
template <class T>
void Mystack<T>::clear()//清空栈
{
if (headnode==NULL)
{
return;
}
while(headnode!=NULL)
{
node=headnode;
headnode=headnode->next;
delete(node);
node=NULL;
}
stacklength=0;
}
template <class T>
bool Mystack<T>::isEmpty()//判断是否为空
{
if (0==stacklength)
{
return true;
}
else
return false;
}

浙公网安备 33010602011771号