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

loading 分享 2026-7-17 下载文档

利用栈的基本操作实现将任意一个十进制整数转化为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进制整数.doc 将本文的Word文档下载到电脑
搜索更多关于: 利用栈的基本操作实现将任意一个十进制整数转化为R进制整数 的文档
相关推荐
相关阅读