#define MAXSIZE 100 //定义栈的最大容量 #define OK 1 //定义状态代码 #define ERROR 0 //定义状态代码 #define OVERFLOW -1 //定义状态代码 typedef int SElemType; //定义栈里面的元素数据类型 typedef int Status; #include //包含输入输出函数头文件 #include <stdlib.h> typedef struct { SElemType *base; //栈底指针 SElemType *top; //栈顶指针 int stacksize; //栈可用的最大容量 }SqStack; //定义顺序栈 Status InitStack( SqStack &S ) //构造一个空栈 { S.base=new SElemType [MAXSIZE]; //分配空间 if( !S.base ) exit(OVERFLOW); //分配空间失败 S.top=S.base; //top初始为base, 空栈 S.stacksize=MAXSIZE; //设置栈的容量 return OK; } int StackEmpty( SqStack S ) // 判断是否为空 { if(S.top==S.base)return 1; //栈空,返回真 else return 0; } Status Push( SqStack &S, SElemType e) // 进栈函数 { if(S.top-S.base==S.stacksize) //栈满 return ERROR; S.top++=e; //元素e压入栈顶,栈顶指针加1 return OK; } Status Pop( SqStack &S, SElemType &e) //出栈函数 { if(S.top==S.base) //栈空 return ERROR; e=--S.top; //栈顶指针减1,将栈顶元素赋给e return OK; } void conversion(int N) //十进制转换为八进制 { SqStack S; SElemType e; InitStack(S); //调用栈初始化函数,初始化一个空栈 printf('%d 转换为八进制数为:',N); while(N) { Push(S,N%8); //将N除以8的余数进栈 N=N/8; //将N更新为N除以8的商 } while(!StackEmpty(S)) { Pop(S,e); printf('%d',e); } printf(' '); }

void main() { int n; printf('请输入你要转换的十进制整数:'); scanf('%d',&n); conversion(n); }

C语言顺序栈实现十进制转换为八进制

原文地址: https://www.cveoy.top/t/topic/nuXd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录