c++链栈

#include<iostream>
using std::cin;
using std::cout;
using std::endl;
namespace mystack2
{
    typedef int type;
    struct node
    {
        type data;
        node*next;
    };
    class stack
    {
        enum{maxsize=1000};
        node*head;
        int items;
    public:
        stack();
        ~stack();
        bool push(type x);
        bool pop(type &x);
        bool pop();
        type top();
        void fill();
        void show();
    };
    stack::stack(){
        head=new node;
        head->next=NULL;
        items=0;
    }
    stack::~stack(){
        node*p;
        while(head){
            p=head;
            head=head->next;
            delete p;
        }
    }
    bool stack::push(type x){
        if(items==maxsize)
            return false;
        node*t=new node;
        t->data=x;
        t->next=head->next;
        head->next=t;
        items++;
        return true;
    }
    bool stack::pop(type &x){
        if(items==0)
            return false;
        node*p=head->next;
        x=p->data;
        head->next=p->next;
        items--;
        return true;
    }
    bool stack::pop(){
        if(items==0)
            return false;
        node*p=head->next;
        head->next=p->next;
        items--;
        return true;
    }
    type stack::top(){
        if(items==0)
            return -1;
        else return head->next->data;
    }
    void stack::fill(){
        for(int i=0;i<10;i++){
            this->push(i);
        }
    }
    void stack::show(){
        node*p=head->next;
        while(p){
            cout<<p->data<<" ";
            p=p->next;
        }
        cout<<endl;
    }
}
int main()
{
    using namespace mystack2;
    stack one;
    one.fill();
    one.show();
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Thereisnospon/p/4768500.html