带链栈类

#include<iostream>
using namespace std;
template<class T>                   //T为虚拟类型
struct node
{
    T d;
    node *next;
};
//定义带链栈类
template<class T>                   //模板声明,数据元素虚拟类型为T
class linked_Stack                  //带链栈类
{
    private:                        //数据成员
        node<T> *top;               //带链栈栈顶指针
    public:                         //成员函数
        linked_Stack();             //构造函数,建立空栈,即栈初始化
        void prt_linked_Stack();    //顺序输出带链栈中的元素
        int flag_linked_Stack();    //检测带链栈的状态
        void ins_linked_Stack(T);   //入栈
        T del_linked_Stack();       //退栈
        T read_linked_Stack();      //读栈顶元素
};
//带链栈初始化
template<class T>
linked_Stack<T>::linked_Stack()
{
    top=NULL;                       //栈顶指针为空
    return;
}
//顺序输出栈中的元素
template<class T>
void linked_Stack<T>::prt_linked_Stack()
{
    node<T> *p;
    p=top;
    if(p==NULL)
    {
        cout<<"空栈!"<<endl;
        return;
    }
    do
    {
        cout<<p->d<<endl;
        p=p->next;
    } while (p!=NULL);   
}
//检测带链栈的状态
template<class T>
int linked_Stack<T>::flag_linked_Stack()
{
    if(top==0)return(0);            //若带链栈为空,则函数返回0
    return(1);                      //正常函数返回1
}
//入栈
template<class T>
void linked_Stack<T>::ins_linked_Stack(T x)
{
    node<T> *P;                     
    P=new node<T>;                  //申请一个新结点
    p->d=x;                         //置新结点数据域值
    p->next=top;                    //置新结点指针域值
    top=p;                          //栈顶指针指向新结点
    return;
}
//退栈
template<class T>
T linked_Stack<T>::del_linked_Stack()
{
    T y;
    node<T> *q;
    if(top==NULL)
    {
        cout<<"空栈!"<<endl;
        return(0);
    }
    q=top;
    y=q->d;                         //栈顶元素赋给变量
    top=q->next;                    //栈顶指针指向下一个结点
    delete q;                       //释放结点的空间
    return(y);                      //返回退栈的元素
}
//读栈顶元素
template<class T>
T linked_Stack<T>::read_linked_Stack()
{
    if(top==NULL)
    {
        cout<<"空栈!"<<endl;
        return(0);
    }
    return(top->d);                 //返回栈顶元素
}

 

posted @ 2020-03-24 13:10  曲杨  阅读(437)  评论(0)    收藏  举报