上次的数据结构实验不是很规范,这次我严格按照标准数据结构规定的函数来做实验。
问题描述:
1、完成数字十进制到八进制的转换。
输入示例:
请输入需转换的数的个数:
3
请输入需转换的数:
28,58,190
输出示例:
转换结果为:
1、 34
2、 72
3、 276
1.栈的建立
Status InitStack(SqStack& S)
{//构造一个空栈
S.base = new SElemType[MAXSIZE]; //为顺序栈动态分配一个最大容量为MAXSIZE的数组空间
if (!S.base) exit(OVERFLOW); //动态分配失败
S.top = S.base; //top初始为base,空栈
S.stacksize = MAXSIZE; //stacksize置为栈的最大容量MAXSIZE
return OK;
}
2.栈的插入
Status Push(SqStack& S, SElemType e)
{//插入元素e为新的栈顶元素
if (S.top - S.base == S.stacksize) return ERROR; //栈满
*S.top++ = e; //元素e压入栈顶,栈顶指针加1
return OK;
}
3.栈的删除
Status Pop(SqStack& S, SElemType& e)
{//删除s的栈顶元素,用e返回其
if (S.top == S.base) return ERROR; //栈顶
e = *--S.top; // 栈顶指针减1,将栈顶元素为e
return OK;
}
4.判断栈是否为空
Status StackEmpty(SqStack S) {
if (S.base == S.top)
return OK;
else
return ERROR;
}
5.进制转化
void conversion(SqStack &S,int N)
{
//非负
SElemType e;
while (N)
{
Push(S, N % 8);
N = N / 8;
}
while (!StackEmpty(S))
{
Pop(S, e);
printf("%d", e);
}
这个实验简单,下个实验大概会在本周内做出