C++ 作业(0830-林雪阵)

手动实现栈容器(链表)

#include 

using namespace std;

template 

class my_stack
{
private:
    class node
    {
    public:
        T num;
        node *next;
    };

public:
    node *head;
    node *TOP;
    //定义无参构造
    my_stack(){
        head = new node;
        head->next=nullptr;
        TOP=head;
    }
    //定义析构函数
    ~my_stack(){
        delete head;
        head=nullptr;
    }

    //入栈
    void push(T aa)
    {
        node *p=new node;
        p->num=aa;
        p->next=nullptr;
        TOP->next=p;
        TOP=p;
    }
    //出栈
    T pop()
    {
        node *p=head;
        T temp=TOP->num;
        while(p->next!=TOP)
        {
            p=p->next;
        }
        delete p->next;
        TOP=p;
        return temp;
    }
    //计算大小
    int size()
    {
        int i=0;
        node *p=head;
        while(p!=TOP)
        {
            p=p->next;
            i++;
        }
        return i;
    }
    //判空
    bool empty()
    {
        if(head==TOP)
            return true;
        else
            return false;
    }
    //输出栈顶元素
    T top()
    {
        return TOP->num;
    }
};


int main()
{
    my_stack ss;
    cout<

 C++ 作业(0830-林雪阵)_第1张图片

 

你可能感兴趣的:(c++,开发语言,蓝桥杯)