#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;
}
stack链式C++
最新推荐文章于 2021-04-16 11:06:14 发布