stack链式C++

来源:互联网 发布:乱世佳人电影结局知乎 编辑:程序博客网 时间:2024/06/14 01:55
#include <iostream>using namespace std;typedef struct _node{    int data;    struct _node* next;    _node(int e ,struct _node* p = nullptr){        data = e;        next = p;       }}node;class stack{public:    stack():m_start(new node(-1,nullptr)){}    ~stack(){        while(m_start->next != nullptr){            node* pdel = m_start;            m_start = m_start->next;            delete pdel;        }        m_start = nullptr;    }    void push(int e);    void pop();    int  top();    bool isEmpty(); private:    node* m_start;};//头插法void stack::push(int e){    node* pnew = new node(e,nullptr);    pnew->next = m_start->next;    m_start->next = pnew;}void stack::pop(){    if(m_start->next != nullptr){        node* pdel = m_start->next;        m_start->next = m_start->next->next;        delete pdel;        }else{        cout << "stack is empty.\n";    }}int  stack::top(){    if(m_start->next != nullptr){        return m_start->next->data;    }else{        cout << "stack is empty.\n";        exit(1);    }}bool stack::isEmpty(){    return m_start->next == nullptr;}int main(){    stack s;    s.push(1);    s.push(2);    s.push(3);    while(!s.isEmpty()){        cout << s.top() << ends;        s.pop();        }    cout << endl;    s.pop();    return 0;}

这里写图片描述

原创粉丝点击