数据结构 (栈):进制转换
2019-03-24 15:04
78 查看
数据结构实验之栈一:进制转换
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。
Output
输出转换所得的 R 进制数。
Example Input
1279
8
Example Output
2377
c++ 代码如下1:
[code]#include"stdio.h" #include<stdlib.h> #include<iostream> using namespace std; typedef int elemtype; //声明 elemtpye 代表 int类型 元素类型 typedef int status; //声明 状态 #define MAXSIZE 100 #define OVERFLOW -2 #define another 50 #define true 1 #define false 0 typedef struct{ //命名一个新的类型名代表结构体类型 //顺序栈的类型定义 elemtype *base; elemtype *top; int stacksize; }Sqstack; status isEmpty(Sqstack &S){ //判断是否 空栈 if(S.top == S.base) //判空操作,top = base; return true; else return false; } void initStack(Sqstack &S){ //初始化操作 S.base = new elemtype[MAXSIZE]; S.top = S.base; S.stacksize = MAXSIZE; } elemtype getTop(Sqstack &S){ //取栈顶操作 if(S.base == S.top) return false; else return *(S.top-1); } void Push(Sqstack &S, elemtype e){ //入栈操作 if(S.top-S.base >= S.stacksize){ S.base = (elemtype *)realloc(S.base,(another+S.stacksize)*sizeof(elemtype)); S.top = S.base + S.stacksize; S.stacksize += another; } *S.top++ = e; } int Pop(Sqstack &S, elemtype &e){ //出栈操作 return e = *--S.top; } int main(){ int n, r; Sqstack S; //原型int的类结构体 initStack(S); //初始化函数 scanf("%d %d", &n, &r); if(n < 0) // n < 0 printf("-"),n = -n; //n = 0 if(n == 0) printf("0"); while(n){ int cnt = n%r; //求余数 传过来是一个一个 n = n/r; //除 Push(S,cnt); } while(!isEmpty(S)){ //结合判空操作 int cnt = Pop(S, cnt); printf("%d",cnt); } printf("\n"); return 0; }
[code] #include<iostream> #include<stdlib.h> using namespace std; const int maxsize = 100000; class Stack { int data[maxsize]; public: int top; Stack(); bool isEmpty(); bool isFull(); void Push(int); int Pop(); void Print(); void Clear(); }; Stack::Stack() { top = -1; } bool Stack::isEmpty() { if (top == -1) return true; else return false; } bool Stack::isFull() { if (top== maxsize - 1) return true; else return false; } void Stack::Push(int e) { if (isFull()) exit(0); else data[++top] = e; } int Stack::Pop() { if (isEmpty()) exit(0); else return data[top--]; } void Stack::Print() { while (top!=-1) cout << Pop(); cout << endl; } int main() { Stack S; Stack(); int n, m; cin >> n >> m; if (n == 0) cout << "0" << endl; //注意当n==0时的情况 else { while (n) { S.Push(n%m); n = n / m; } S.Print(); } return 0; }
c语言代码如下2:
如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
[code] #include<stdio.h> #include<string.h> int main() { int n,r,i; while(scanf("%d %d",&n,&r)!=EOF) { if(n<0) { printf("-");n=-n; } if(n==0){printf("0\n");continue;} int c=0,a[100]; while(n) { a[c]=(n%r); c++; n/=r; } for(i=c-1;i>=0;i--) { if(a[i]>=10) { printf("%c",'A'+a[i]-10); } else printf("%d",a[i]); } printf("\n"); } }
原文:https://blog.csdn.net/qq_39051129/article/details/76736618
相关文章推荐
- 数据结构题解: 线性存储 、 链表结构 实现栈功能 --------------进制转换
- 数据结构:进制转换
- 数据结构——进制转化
- iOS 将16数据转换成2进制字符串
- dataset 中将 将2进制数组列的数据 转换成文件 和 从文件中 转换到 dataset 方法
- android开发中遇到的进制转换,16进制数据流转和字符串的相互转换
- 数据结构与算法笔记 lesson 22 树与二叉树的转换与赫夫曼树
- 黑马程序员—Java语言基础(关键字、标识符、注释、常量与变量、进制、数据类型、类型转换、代码示例)
- mktime(将时间结构数据转换成经过的秒数)
- 将树形结构的数据转换为二维数组 (续 PHP非递归方式实现无限分类(转载))
- Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)
- Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)
- C#中各个进制数据之间的相互转换
- 数据结构(9)之树的补充(赫夫曼树;线索二叉树树;树与二叉树转换)
- javaSE部分知识的梳理和复习(一)--进制转换和基本数据类型的回顾
- 如何在百家姓128进制和比特币58进制的数据之间转换
- linux shell 下各种进制数据转换。
- java 数据类型-进制,unicode强制转换与隐式转换(1)
- 11.14数据结构----二叉树,树,森林之间的转换
- C#简单通用的进制转换,把非十进制的数据类型转换成十进制的,然后再转换成其他类型。