用栈实现进制的转换
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年技術見證,附贈技術全景圖總結
- 上一篇: 时隔七个月,我终于弄懂了汉诺塔的思想
- 下一篇: 前、中、后缀表达式概述及转换+栈的计算器