| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:栈的进制转换应用问题
取消只看楼主 加入收藏
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
快速回复:栈的进制转换应用问题
数据加载中...
 
   



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

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