#include<iostream>
#include<string>
using namespace std;
struct LinkStack
{
 int data;
 LinkStack *next;
};
class LinkStackClass
{
private:
 LinkStack *head;
public:
 LinkStackClass();//构造函数
 ~LinkStackClass();//析构函数
 bool StackEmpty();
 void Push(int e);//进栈
 bool Pop(int &e);//出栈
 bool GetTop(int &e);//取栈顶的元素
};
LinkStackClass::LinkStackClass()
{
 head=new LinkStack;
 head->next=NULL;
}
LinkStackClass::~LinkStackClass()
{
 LinkStack *pre=head;//
 LinkStack *p=pre->next;
 while(p!=NULL)
 {
  delete pre;
  pre=p;
  p=p->next;
 }
 delete pre;
}
bool LinkStackClass::StackEmpty()
{
 return (head->next==NULL);
}
void LinkStackClass::Push(int e)
{
 LinkStack *p=new LinkStack;
 p->data=e;
 p->next=head->next;
 head->next=p;
}
bool LinkStackClass::Pop(int &e)
{
 LinkStack *p;
 if(head->next==NULL) 
  return false;
 p=head->next;
 e=p->data;
 head->next=p->next;
 delete p;
 return true;
}
bool LinkStackClass::GetTop(int &e)
{
 LinkStack *p;
 if(head->next==NULL) return false;
 p=head->next;
 e=p->data;
 return true;
}
int main()
{
 LinkStackClass st;
 int e;
 cout<<"建立一个链表"<<endl;
 st.Push(2);
 st.Push(4);
 cout<<"出栈"<<endl;
 st.Pop(e);
 cout<<e<<endl;
    st.Pop(e);
 cout<<e<<endl;
}

栈_第1张图片

你可能感兴趣的:(栈)