标题:栈的进制转换应用问题
取消只看楼主
lovableqz
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-27
 问题点数:0 回复次数:0 
栈的进制转换应用问题

请高手指教为什么以下程序不能实现十进制数转八进制数
原代码如下:

#include "stdio.h"

#include "stdlib.h"

#define STACK_INIT_SIZE 100

/*存储空间初始分配量*/

#define STACKINCREMENT 10

/*存储空间分配增量*/

#define OVERFLOW -2

#define OK 1

#define ERROR 0

typedef int Status;

typedef int SElemType;

typedef struct{

SElemType *base; /*在栈构造之前和销毁之后,base的值为NULL*/

SElemType *top; /*栈顶指针*/

int stacksize; /*当前已分配的存储空间,以元素为单位*/

}SqStack;

Status InitStack(SqStack S){

/*构造一个空栈S*/

S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

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

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return OK;

}

Status Push(SqStack S,SElemType e){

/*插入元素e为新的栈顶元素*/

if(S.top-S.base>=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;

}

Status Pop(SqStack S,SElemType *e){

/*若栈不空,则删除S的栈顶元素,e返回其值,并返回OK;否则返回ERROR*/

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

e=--S.top;

return OK;

}

Status StackEmpty(SqStack S){

/*若栈S是空栈,则返回TRUE,否则返回FALSE*/

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

return ERROR;

}

void conversion(){

/*对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数*/

SqStack S;

int *e,N;

InitStack(S);

scanf("%d",&N);

while(N){

Push(S,N%8);

N=N/8;

}

while(!StackEmpty(S)){

Pop(S,e);

printf("%d",*e);

}

}

void main(){

conversion();

getch(); /*使用WinTC编译后的运行结果不马上关闭*/

}

搜索更多相关主题的帖子: 进制 Calibri face 应用 
2007-11-14 19:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-185960-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135857 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved