运行良好,注意调试
// 链式栈.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class Node
{
private:
int data;
Node*pnext;
friend class lstack;
public:
Node();
~Node();
};
class lstack
{
private:
Node*top;
public:
lstack();
~lstack();
void clear();
bool isempty()const;
void push(const int vdata);
void pop();
int gettop()const;
void Show();
};
Node::Node()
{
this->pnext=NULL;
}
Node::~Node()
{
}
lstack::lstack()
{
top=NULL;
}
lstack::~lstack()
{
clear();
}
bool lstack::isempty()const
{
return top==NULL;
}
void lstack::clear()
{
Node*pmove;
while(top!=NULL)
{
pmove=top;
top=top->pnext;
delete pmove;
}
}
void lstack::push(int vdata)
{
Node*pinsert=new Node();
pinsert->pnext=top;
top=pinsert;
pinsert->data=vdata;
}
void lstack::pop()
{
if(isempty())
{
cout<<"wrong done"<<endl;
exit(1);
}
Node*pdele=top;
top=top->pnext;
int dele=pdele->data;
delete pdele;
}
int lstack::gettop()const
{
if(isempty())
{
cout<<"no top data"<<endl;
exit(1);
}
return top->data;
}
void lstack::Show()
{
Node*pmove=top;
while(pmove!=NULL)
{
cout<<pmove->data<<" "<<endl;
pmove=pmove->pnext;
}
}
int main(int argc, char* argv[])
{
lstack stack;
int array[10]={1,2,3,4,5,6,7,8,9,0};
for(int i=0;i<10;i++)
{
stack.push(array[i]);
}
stack.Show();
return 0;
}