c++初学者, 进制转换测试小程序,运行出现死循环,怎样改,谢谢各位!

[复制链接]
查看11 | 回复1 | 2010-12-18 19:54:34 | 显示全部楼层 |阅读模式
源代码如下:
#include "stackhead.h"
void conversion(int A);
int main()
{

int A;

cout>A;

switch(A)

{case 1: {int B;

cout>B;

conversion(B);break;

}

default: cout=S.stacksize){//栈满,追加存储空间

S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base)exit(OVERFLOW);//存储分配失败

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return OK;
}//Push
Status Pop(SqStack &S,SElemType &e)
//出栈
{//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回Error

if(S.top==S.base)return ERROR;

e=*--S.top;

return OK;
}//Pop
bool StackEmpty(SqStack &S)
//判断栈是否为空
{
return (S.stacksize ==0)?true:false;
}
编译运行都通过,不过运行时,比如输入16,(想让程序输出16的八进制数,即20),但输出结果是200000……后面无数个零,死循环啊,怎么改啊,谢谢了!

回复

使用道具 举报

千问 | 2010-12-18 19:54:34 | 显示全部楼层
StackEmpty函数有问题,你的stacksize 是分配空间,不是元素数目吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行