作者:傲慢的小草7_170 | 来源:互联网 | 2023-01-18 10:09
SeqStack.h#ifndefSEQSTACK_H#defineSEQSTACK_HconstintStackSize10;10只是示例性的数据,可以根据实际
//SeqStack.h
#ifndef SEQSTACK_H
#define SEQSTACK_H
const int StackSize=10; //10只是示例性的数据,可以根据实际问题具体定义
template
//定义模板类SeqStack
class SeqStack
{
public:
SeqStack( ); //构造函数,栈的初始化
~SeqStack( ){} //析构函数
void Push(T x); //将元素x入栈
T Pop( ); //将栈顶元素弹出
T GetTop( ); //取栈顶元素(并不删除)
bool Empty( ); //判断栈是否为空
T Transform(long number, int r);//进制转换
private:
T data[StackSize]; //存放栈元素的数组
int top; //栈顶指针,指示栈顶元素在数组中的下标
};
#endif
#include "SeqStack.h"
template
SeqStack::SeqStack( )
{
top=-1;
}
//构造函数
template
void SeqStack::Push(T x)
{
if (top== StackSize-1) throw "上溢";
top++;
data[top]=x;
}
//入栈
template
T SeqStack::Pop( )
{
T x;
if (top==-1) throw "下溢";
x=data[top--];
return x;
}
//出栈
template
T SeqStack::GetTop( )
{
if (top!=-1)
return data[top];
}//读取栈顶元素
template
bool SeqStack::Empty( )
{
if(top==-1) return 1;
else return 0;
} //判空操作
template
T SeqStack::Transform(long number, int r)
{
while(number!=0)
{
int k = number%r;
Push(k);
number = number/r;
}
while(Empty())
{
if(r!=16) return Pop();
else
{
int x = Pop();
if(x<10) return x;
else
{
switch(x)
{
case 10: return'A'; break;
case 11: return'B'; break;
case 12: return'C'; break;
case 13: return'D'; break;
case 14: return'E'; break;
case 15: return'F'; break;
}
}
}
}
cout< }//进制转换函数
//SeqStackMain.cpp
#include //引用输入输出流
using namespace std;
#include "SeqStack.cpp" //引入成员函数文件
int main()
{
cout<<"请输入一个整数: ";
long n;
cin>>n;
SeqStack a;
cout<<"整数 "< cout<<"整数 "< cout<<"整数 "< cout<<"整数 "<
return 0;
}
4 个解决方案