栈的实现(C++版)

来源:互联网 发布:淘宝哪里有卖听话水 编辑:程序博客网 时间:2024/06/06 02:57
#include "iostream"#include "assert.h"using namespace std;class Stack{public:class Link{public:int data;Link* next;};private:Link* head;int size;public:Stack():head(NULL),size(0){}~Stack(){Clear();}void Push(int data){Link* link = new Link;assert(link != NULL);link->next=head;link->data=data;head=link;size++;}int Empty(){return size==0;}int Pop(int* data){Link* link=head;if (Empty()){return 0;}*data = head->data;head = head->next;delete link;size--;return 1;}void Clear(){int i;while(!Empty()){Pop(&i);}}};int main(){int i=0;Stack stack;for (i=0;i<5;i++){stack.Push(i);}while(!stack.Empty()){stack.Pop(&i);cout<<i<<endl;}return 0;}