实验题1:使用顺序栈将十进制整数转换成八进制
一、实验目的
领会顺序栈存储结构和掌握顺序栈中各种基本运算算法设计,并掌握栈在求解数制转换问题中的应用。
二、实验环境
VC++6.0
三、实验准备
(1)复习课件中理论知识
(2)练习课堂所讲的例子
四、实验内容
编写一个程序SqStack.cpp,实现顺序栈的各种基本运算(假设顺序栈的数据元素类型ElemType为int),并在此基础上设计一个主程序exp1.cpp,完成如下功能:
(1)初始化顺序栈s;
(2)判断栈s是否为空;
(3)判断栈s是否已满;
(4)获取栈顶元素e;
(5)入栈操作
(6)出栈操作;
(7)释放栈;
(8)编写数制转换函数conversion();
(9)main函数中调用该函数进行测试;
五、实验步骤
六、实验总结
附:源代码
#includeiostream
usingnamespacestd;
#defineOK1
#defineERROR0
#defineOVERFLOW-2
#defineMAXSIZE
typedefintStatus;
typedefintSElemType;
typedefstruct//定义栈
{
SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack(SqStackS)//构造一个空栈
{
S.base=newSElemType[MAXSIZE];
if(!S.base)exit(OVERFLOW);//存储分配失败
S.top=S.base;
S.stacksize=MAXSIZE;
returnOK;
}//InitStack初始化
StatusPush(SqStackS,SElemTypee)//插入元素e为新的栈顶元素
{
if(S.top-S.base==S.stacksize)
returnERROR;//栈满
*S.top++=e;
returnOK;
}//Push入栈
StatusPop(SqStackS,SElemTypee)//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
{
if(S.top==S.base)returnERROR;
e=*--S.top;
returnOK;
}//Pop出栈
StatusStackEmpty(SqStackS)
{
if(S.top==S.base)
returnOK;
else
returnERROR;
}
voidconversion(intN)//构造空栈
{
inte;
SqStackS;
InitStack(S);
while(N)
{
Push(S,N%8);
N=N/8;
}
while(!StackEmpty(S))
{
Pop(S,e);
coute;
}
}
intmain()
{
intn;
cinn;
conversion(n);
return0;
}
预览时标签不可点收录于话题#个上一篇下一篇