栈和队列的实验

建立一个头文件SeqStack.h该文件包括顺序栈类SeqStack的定义


#ifndef SeqStack_H

#define SeqStack_H
const int StackSize=10;      //栈最多有10个元素
template<class DataType>     //定义模板类SeqStack
class SeqStack
{
public:
SeqStack();              //构造函数,栈的初始化
~SeqStack(){}            //析构函数
void Push(DataType x);   //将元素x入栈
DataType Pop();          //将栈顶元素弹出
    DataType GetTop();       //去栈顶元素(不删除)
int Empty();             //判断栈是否为空
private:
DataType data [StackSize];//存放栈元素的数组
int top;                  //栈顶指针,指示栈顶元素在数组的下标
};

#endif

建立一个源程序文件SeqStack.cpp,该文件包括类SeqStack中成员函数的定义

#include"SeqStack.h"
template<class DataType>       //以下是类SeqStack的成员函数定义
SeqStack<DataType>::SeqStack()
{
top=-1;
}
template<class DataType>
void SeqStack<DataType>::Push(DataType x)   //从类SeqStack中继承函数Push
{
if(top==StackSize-1)throw"上溢";          
top++;
data[top]=x;
}
template<class DataType>
DataType SeqStack<DataType>::Pop()           //从类SeqStack中继承函数Pop
{
DataType x;
if(top==-1)throw"下溢";
x=data[top--];
return x;
}
template<class DataType>
DataType SeqStack<DataType>::GetTop()     //从类SeqStack中继承函数GetTop
{
if(top!=-1)
return data[top];
}
template<class DataType>
int SeqStack<DataType>::Empty()         //从类SeqStack中继承函数Empty
{
if(top==-1)return 1;
else return 0;
}


建立一个源程序文件SeqStack_main.cpp,该文件包括主函数

#include<iostream>
using namespace std;
#include "SeqStack.cpp"         //引入类SeqStack的成员函数定义
void main()
{
SeqStack<int>S;            //创建模板类的实例
if(S.Empty())
cout<<"栈为空"<<endl;
else
cout<<"栈非空"<<endl;
cout<<"对15和10执行入栈操作"<<endl;
S.Push(15);
S.Push(10);
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;         //取栈顶元素
cout<<"执行一次出栈操作"<<endl;
S.Pop();                        //执行出栈操作
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值