算法基于原理:N = (N div d)×d + N mod d

代码思路:
- 初始化栈
- 输入要转化的数据N
- 当N不为0,把N%8取余的结果入栈
- 当栈不为空,输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #include <iostream>
using namespace std; class steak; class StackNode { friend class LinkedStack;
public: StackNode* link; int data;
public: StackNode(StackNode* ptr = NULL) { link = ptr; } StackNode(int& c, StackNode* ptr = NULL) { data = c; link = ptr; } }; class LinkedStack { public: StackNode* top; public: LinkedStack(); void Push(int& ch); int Pop(int& ch); int IsEmpty() { return (top == NULL) ? 1 : 0; } int getSize(); void output(); }; LinkedStack::LinkedStack() { top = NULL; } void LinkedStack::Push(int& ch) { top = new StackNode(ch, top); }
int LinkedStack::Pop(int& ch) { if (IsEmpty()) return 0; StackNode* p = top; top = top->link; ch = p->data; delete p; return 1; } void LinkedStack::output() { int b; while (top != NULL) { Pop(b); cout << b; } } void conversion() { LinkedStack S; int N; cin >> N; while (N) { int a = N % 2; S.Push(a); N = N / 2; } S.output(); }
int main() { conversion(); return 0; }
|