用栈实现进制的转换
1.问题描述
将一个十进制整数N转换成八进制,把N与8求余得到八进制数的各位依次进栈,计算完毕后将栈中的八进制依次出栈输出,输出的结果就是待求八进制数
2.算法设计步骤
3.代码详解
#include<iostream> using namespace std; #define MAXSIZE 100 #define SElemType int #define Status int #define OK 1 #define ERROR 0 typedef struct{SElemType *base;SElemType *top;int stacksize; }SqStack; Status InitStack(SqStack &S)//初始化栈 {S.base=new SElemType[MAXSIZE];if(!S.base)exit(0);S.top=S.base;S.stacksize=MAXSIZE;return OK; } Status Push(SqStack &S,SElemType e)//栈顶加入一个元素 {if(S.top-S.base==S.stacksize)return ERROR;*S.top++=e;return OK; } Status Pop(SqStack &S,SElemType &e)//栈顶弹出一个元素 {if(S.base==S.top)return ERROR;e=*--S.top;return OK; } Status Empty(SqStack S)//判断栈是否为空 {if(S.base==S.top)return OK;return ERROR;} void conversion(int N,SqStack &S)//实现进制转换 {int e;InitStack(S);while(N){Push(S,N%8);N=N/8;}while(!Empty(S)){Pop(S,e);cout<<e; } } int main() {SqStack S;conversion(17,S); } 与50位技术专家面对面20年技术见证,附赠技术全景图总结
- 上一篇: 时隔七个月,我终于弄懂了汉诺塔的思想
- 下一篇: 前、中、后缀表达式概述及转换+栈的计算器