头文件:
#ifndef linkstack_H
#define linkstack_H
struct node
{
int data;
node *next;
};
class linkstack
{
private:
node *top;
public:
linkstack();
~linkstack(){}
void push(int x);
int pop();
int gettop();
int empty();
};
#endif
子函数:
#include"linkstack.h"
#include<stdlib.h>
linkstack::linkstack()
{
top=NULL;
}
void linkstack::push(int x)
{
node *s;
s=new node;
s->data=x;
s->next=top;
top=s;
}
int linkstack::pop()
{
node *p;
p=new node;
int x;
if(pop==NULL) throw"下溢";
x=top->data;
p=top;
top=top->next;
delete p;
return x;
}
int linkstack::gettop()
{
return top->data;
}
int linkstack::empty()
{
if(top==NULL)
return 1;
else
return 0;
}
主函数:
#include<iostream>
using namespace std;
#include<stdlib.h>
#include"linkstack.h"
void main()
{
linkstack l;
if(l.empty())
cout<<"链栈为空"<<endl;
else
cout<<"链栈非空"<<endl;
cout<<"分别对15和10执行入栈操作"<<endl;
l.push(15);
cout<<"栈顶元素为:"<<l.gettop()<<endl;
l.push(10);
cout<<"栈顶元素为:"<<l.gettop()<<endl;
cout<<"执行一次出栈操作"<<endl;
l.pop();
cout<<"栈顶元素为:"<<l.gettop()<<endl;
}