好文档 - 专业文书写作范文服务资料分享网站

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

天下 分享 时间: 加入收藏 我要投稿 点赞

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。 算法为:

1、定义栈的顺序存取结构

2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等) 3、定义一个函数用来实现上面问题: (1)十进制整数X和R作为形参 (2)初始化栈

(3)只要X不为0重复做下列动作

将X % R入栈, X=X/R

(4)只要栈不为空重复做下列动作

栈顶出栈 , 输出栈顶元素

#include #include #include

#define stack_init_size 100 #define stackincrement 10

typedef struct sqstack {

int *base; int *top; int stacksize; } sqstack;

int StackInit(sqstack *s) {

s->base=(int *)malloc(stack_init_size *sizeof(int)); if(!s->base) return 0;

s->top=s->base;

s->stacksize=stack_init_size; return 1; }

int Push(sqstack *s,int e) {

if(s->top-s->base>=s->stacksize) {

s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int)); if(!s->base) return 0;

s->top=s->base+s->stacksize; s->stacksize+=stackincrement;

}

*(s->top++)=e; return e; }

int Pop(sqstack *s,int e) {

if(s->top==s->base) return 0; e=*--s->top; return e; }

int stackempty(sqstack *s) {

if(s->top==s->base) {

return 1; } else {

return 0; } }

int conversion(sqstack *s) {

int n,e=0,flag=0;

printf(\输入要转化的十进制数:\\n\ scanf(\

printf(\要转化为多少进制:2 进制、8 进制、16 进制 填数字!\\n\ scanf(\

printf(\将十进制数%d 转化为%d 进制是:\\n\ while(n) {

Push(s,n%flag); n=n/flag; }

while(!stackempty(s)) {

e=Pop(s,e); switch(e) {

case 10: printf(\ break;

case 11: printf(\

break;

case 12: printf(\ break;

case 13: printf(\ break;

case 14: printf(\ break;

case 15: printf(\ break;

default: printf(\ } }

printf(\ return 0; }

int main() {

sqstack s; StackInit(&s); conversion(&s); return 0; }

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

利用栈的基本操作实现将任意一个十进制整数转化为R进制整数。算法为:1、定义栈的顺序存取结构2、分别定义栈的基本操作(初始化栈、判栈为空、出栈、入栈等)3、定义一个函数用来实现上面问题:(1)十进制整数X和R作为形参(2)初始化栈(3)只要X不为0重复做下列动作将X%R入栈,X=X/R(4)只要栈不
推荐度:
点击下载文档文档为doc格式
4stn66uyur2r4yi9c25l
领取福利

微信扫码领取福利

微信扫码分享