精华内容
下载资源
问答
  • 采用链栈, 基本流程为:先将任意进制转化为十进制,再将十进制转化为目标进制, 达到任意进制转化任意进制的功能。 中间函数:将任意进制转化为十进制 int Anysystem_convert_TenSystem(char *s,int n) { int ...

    采用链栈, 基本流程为:先将任意进制转化为十进制,再将十进制转化为目标进制, 达到任意进制转化任意进制的功能。

    中间函数:将任意进制转化为十进制

    int Anysystem_convert_TenSystem(char *s,int n)
    {
        int sum=0;
        int num_size= strlen(s);
        for(int k=0;k<num_size;k++)
        {
            if(s[k]>='0'&&s[k]<='9')                 // 处理数字
                sum=sum+(int(s[k]-'0'))*pow(n,num_size-k-1);
            else if(s[k]>='A'&&s[k]<='Z')        // 处理十进制以上的字母
                sum=sum+int(s[k]-55)*pow(n,num_size-k-1);
        }
        return sum;
    }

    将十进制转化为目标进制:

    void Convert_system(LinkStack *p,int N,int n)      // n表示目标进制.
    {
        LinkStackNode *ptr=p->top;
        while(N!=0)                     // 余数依次进栈
        {
            Push_LinkstackNode(p,N%n);//入栈
            N/=n;
        }

        while(p->length)
        {
            int data= pop_LinkStack(p);
            if(data>9)                      // 对超过9的数字进行特殊处理。
            {
                data=data+55;
                printf("%c",data);
            }

            else
                printf("%d",data);  // 小于9的数字直接进行输出
        }
    }

    源代码

    
    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    #include "math.h"
    typedef struct LinkStackNode
    {
        int data;
        LinkStackNode *next;
    }LinkStackNode;
    typedef struct LinkStack
    {
        LinkStackNode *top;
        int length;
    }LinkStack;
    LinkStack *initialize_stack()//链栈的初始化
    {
        LinkStack *p = (LinkStack *) malloc(sizeof(LinkStack));
        p->length = 0;
        p->top = NULL;
        return p;
    }
    void Push_LinkstackNode(LinkStack *p,int data)//入栈 
    {
        if(!p) return;
        LinkStackNode *temp=(LinkStackNode *) malloc(sizeof(LinkStackNode));
        temp->data=data;
        temp->next=p->top;
        p->top=temp;
        p->length++;
    }
    int pop_LinkStack(LinkStack *p)//出栈 
    {
        if(!p) return 1;
        int data;
        LinkStackNode *temp=p->top;
        data=temp->data;
        p->top=temp->next;
        p->length--;
        free(temp);
        return data;
    }
    int Anysystem_convert_TenSystem(char *s,int n)//N代表该数字 n代表进制数 转化为10进制 
    {
        int sum=0;
        int num_size= strlen(s);
        for(int k=0;k<num_size;k++)
        {
            if(s[k]>='0'&&s[k]<='9')
                sum=sum+(int(s[k]-'0'))*pow(n,num_size-k-1);
            else if(s[k]>='A'&&s[k]<='Z')
                sum=sum+int(s[k]-55)*pow(n,num_size-k-1);
        }
        return sum;
    }
    void Convert_system(LinkStack *p,int N,int n)//把十进制数转换为其它 
    {
        LinkStackNode *ptr=p->top;
        while(N!=0)
        {
            Push_LinkstackNode(p,N%n);//入栈
            N/=n;
        }
        while(p->length)
        {
            int data= pop_LinkStack(p);
            if(data>9)
            {
                data=data+55;
                printf("%c",data);
            }
            else
                printf("%d",data);
        }
    }
    int main()
    {
        char s[20];
        int N_next,N_ptr,num_ptr,num_next;
        LinkStack *Stack=initialize_stack();
        printf("输入转换之前的进制:");
        scanf("%d",&N_ptr);
        printf("输入转换后的进制:");
        scanf("%d",&N_next);
        printf("请输入你想要转换的数字:");
        scanf("%s",s);
        num_next= Anysystem_convert_TenSystem(s,N_ptr);
        Convert_system(Stack,num_next,N_next);
    }

    展开全文
  • 栈的数据结构实验11.栈的建立2.栈的插入3.栈的删除4.判断栈是否为空5.进制转化 上次的数据结构实验不是很规范,这次我严格按照标准数据结构规定的函数来做实验。 问题描述: 1、完成数字十进制到八进制的转换。 输入...

    上次的数据结构实验不是很规范,这次我严格按照标准数据结构规定的函数来做实验。

    问题描述:
    1、完成数字十进制到八进制的转换。
    输入示例:
    请输入需转换的数的个数:
    3
    请输入需转换的数:
    28,58,190
    输出示例:
    转换结果为:
    1、 34
    2、 72
    3、 276

    1.栈的建立

    Status InitStack(SqStack& S)
    {//构造一个空栈 
        S.base = new SElemType[MAXSIZE];   //为顺序栈动态分配一个最大容量为MAXSIZE的数组空间 
        if (!S.base) exit(OVERFLOW);    //动态分配失败
        S.top = S.base;     //top初始为base,空栈 
        S.stacksize = MAXSIZE;   //stacksize置为栈的最大容量MAXSIZE 
        return OK;
    
    }
    

    2.栈的插入

    Status Push(SqStack& S, SElemType e)
    {//插入元素e为新的栈顶元素
        if (S.top - S.base == S.stacksize)   return ERROR;   //栈满 
        *S.top++ = e;    //元素e压入栈顶,栈顶指针加1 
        return OK;
    
    }
    

    3.栈的删除

    Status Pop(SqStack& S, SElemType& e)
    {//删除s的栈顶元素,用e返回其    
        if (S.top == S.base)  return ERROR;  //栈顶 
        e = *--S.top;   // 栈顶指针减1,将栈顶元素为e 
        return OK;
    
    }
    

    4.判断栈是否为空

    Status StackEmpty(SqStack S) {
        if (S.base == S.top)
            return OK;
        else
            return ERROR;
    }
    

    5.进制转化

    void conversion(SqStack &S,int N)
    {
        //非负
        SElemType e;
        while (N)
        {
            Push(S, N % 8);
            N = N / 8;
        }
        while (!StackEmpty(S))
        {
            Pop(S, e);
            printf("%d", e);
    
        }
    

    这个实验简单,下个实验大概会在本周内做出

    展开全文
  • 将十进制数M转化为N进制数 示例1 输入 7,2 返回值 "111" public class BinaryTest { public static void main(String[] args) { BinaryTest binaryTest = new BinaryTest(); System.out.println...

    题目描述

    给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

     

    示例1

    输入

    7,2

    返回值

    "111"
    public class BinaryTest {
        public static void main(String[] args) {
            BinaryTest binaryTest = new BinaryTest();
    
            System.out.println(binaryTest.solve(-4,3));
        }
    
        /**
         * 进制转换
         * @param M int整型 给定整数
         * @param N int整型 转换到的进制
         * @return string字符串
         */
        public String solve (int M, int N) {
    
            StringBuilder sb = new StringBuilder();
            int t = M;
            int res = Math.abs(M);
    
            char[] cs = chs();
    
            do{
                M = res;
                sb.append(cs[M%N]);
            }while((res = M/N) != 0);
    
            return t > 0 ? sb.reverse().toString() : sb.append("-").reverse().toString();
    
        }
    
        private char[] chs(){
            char[] cs = new char[16];
            for (int i = 0; i < 10; i++) {
                cs[i] = (char)('0'+i);
            }
    
            for (int i = 10; i < 16; i++) {
                cs[i] = (char)('A'+(i-10));
            }
    
            return cs;
        }
    }
    

     

    展开全文
  • } } } //基于栈的应用函数---将十进制转为八进制 void CONVERT(int n) { sl topelm=CREATE(); do { PUSH(topelm,n%8); n=n/8; }while(n!=0); PRINTSTACK(topelm); } //主函数 int main() { sl l; l=...
    #include <stdio.h>
    #include<stdlib.h>
    #define M 100
    //创建结构体
    typedef struct sline
    {
    	int STACK[M];
    	int top;
    }sline,*sl;
    //创建栈
    sl CREATE()
    {
    	sl l;
    	l=(sl)malloc(sizeof(sline));
    	l->top=-1;
    	if(l==NULL)
    	{
    		printf("failure!");
    	}
    	else
    	{
    		printf("success!");
    	}
    	return l;
    }
    //判空
    int EMPTYS(sl l)
    {
    	return l->top==-1;
    }
    //判满
    int FULL(sl l)
    {
    	return l->top==M-1;
    }
    /*//取栈顶元素
    int GETTOPS(sl l,int item)
    {
    	if(EMPTYS(l))
    	return 0;
    	else
    	{
    		item=l->STACK[l->top];
    		return 1;
    	}
    }*/
    //入栈
    int PUSH(sl l,int item)
    {
    	if(FULL(l))
    		return 0;
    	else
    	{
    		l->STACK[++(l->top)]=item;
    		return 1;
    	}
    }
    //退栈
    int POP(sl l,int item)
    {
    	if(EMPTYS(l))
    		return 0;
    	else
    	{
    		item=l->STACK[(l->top)--];
    		return 1;
    	}
    }
    //显示栈内容
    void PRINTSTACK(sl l)
    {
    	int i;
    	if(EMPTYS(l))
    	{
    		printf("The stack is empty!");
    	}
    	else
    	{
    		for(i=(l->top);i>=0;i--)
    		{
    			printf("%d",l->STACK[i]);
    		}
    	}
    }
    //基于栈的应用函数---将十进制转为八进制
    void CONVERT(int n)
    {
    	sl topelm=CREATE();
    	do
    	{
    		PUSH(topelm,n%8);
    		n=n/8;
    	}while(n!=0);
    	PRINTSTACK(topelm);
    }
    //主函数
    int main()
    {
    	sl l;
    	l=CREATE();
    	PUSH(l,50);
    	PRINTSTACK(l);
    	printf("\n");
    	PUSH(l,60);
    	PRINTSTACK(l);
    	printf("\n");
    	POP(l,50);
    	PRINTSTACK(l);
    	printf("\n");
    	printf("转换进制数:55----\n");
    	CONVERT(55);
    	system("pause");
        return 0;
    }
    
    展开全文
  • 将十进制数除去你要转化进制,比如是二进制就÷2。最后将余数反过来。 举个例子: 将579转化为8进制。余数分别为3011,所以答案就是1103。 相关代码: int a[1001]; void change(int num1,int num2) { if(num1==...
  • 数据结构(进制转换)

    2021-11-12 22:33:44
    } 主函数 #include #include #include"SqStack.h" void trans(int d,char b[],int j)//10进制以内 { SqStack st; InitStack(st); char ch; int i=0; while(d!=0) { ch=d%j+'0'; Push(st,ch); d/=j; } while(!...
  • 数据结构—递归实现十进制装换为任意进制 代码: #include <stdio.h> #include <stdlib.h> #include"stack.h" stack Stack; void toAnyDigit(int n, int d) {//十进制转化为d进制 if (n == 0) {//递归...
  • 编写把一个十进制数转换为R进制 (如:R=2,则转换为二进制,R=7则转换为7进制)的数制转换算法函数(要求利用栈来实现) 【算法步骤】 ① 初始化一个空栈S。 ② 当十进制数N非零时,循环执行以下操作: l把N...
  • 进制转化为八进制

    2021-03-31 19:27:14
    我们在进行十进制转化为其他进制的时候用的就是所谓的短除法 如下图: #include"iostream" using namespace std; int main() { int a[100];//定义一个数组来存最后的八进制数 int n,i=0; cin>>n; //用短...
  • #include<stdlib.h>.../*定义栈结构*/ typedef struct { ElemType data[MAXSIZE]; int top; }SeqStack,*PSeqStack; /*初始化栈,构造一个空栈,如果成功,则返回栈的地址*/ PSeqStack Init_SeqStack.
  • 从键盘上输入一个十进制数n,试编写一个算法, 将其转换成对应的p进制输出(p为2.8.16) */ # include <iostream> # include <stdlib.h> # include <stdio.h> using namespace std; const int ...
  • 数据结构 study 6: 栈 实现 十进制 转换为 8进制
  • 用栈实现进制转化

    2021-10-24 11:19:56
    数据结构实验:用栈实现进制转化 进制转换(以十进制转二进制为例) #include <stdio.h> #include <malloc.h> #define max 100 //宏定义 typedef int elemtype;//表明该类型的作用,便于修改 typedef ...
  • 利用栈(以顺序栈作存储结构)实现进制转换。给定一个十进制整数,编程将该数以二进制形式输出。 顺序栈的类型定义: #define MAXSIZE 100 // MAXSIZE为最大数据元素数目 typedef int ElemType; typedef struct { ...
  • 【背景】在计算机中,基本的编码都是以二进制为基础。为此,理解进制转换过程,可以帮助我们更好地理解计算机底层的原理。(本题取自广西师范大学2017年硕士研究生招生考试试题编程题部分。)【源码运行环境】操作系统...
  • #include<stdio.h> #define maxsize 100 typedef int elemtype; typedef struct { elemtype data[maxsize]; int top; }seqstack; void initstack(seqstackq) { q->top=-1; } int push(seqstackq,elemtype ...}
  • } 2:第二步编写核心代码 算法思想: 栈的特点是“先进后出”,例如键入二进制‘10101100#’ 入栈顺序从左依次往右入栈,输入“#”时表示输入结束”。出栈则是最右边的0先出栈,后面的元素依次出栈参与运算。当栈...
  • } //进制转换 void trans(int d, int c, char b[]) { SqStack S; InitStack(S); char ch; int i = 0; while (d != 0) { ch = '0' + d % c; //求余数并转为字符 Push(S, ch); //进栈 d /= c; //继续下一位 } while ...
  • 将十进制转化为任意进制数C语言实现 #include "allinclude.h" //DO NOT edit this line char Compare(SqList A, SqList B) { // Add your code here int i = 0; while((i <= A.length-1) && (i &...
  • printf(“请输入你想转换尾多少进制的数\n”); scanf_s("%d", &r); initstack(&s); while (N) { pushstack(&s, N % r); N = N / r; } while (!empty(&s))//当栈不为空的时候才进行出栈 { popstack(&s, &val); ...
  • 数据结构c语言-顺序栈(实现进制转换) 文章目录数据结构c语言-顺序栈(实现进制转换)前言一、顺序栈数据结构定义二、创建空的顺序栈三、判断栈是否为空四、判断栈满五、入栈六、弹栈七、取栈顶八、销毁顺序栈九、...
  • 联系到近期数据结构学的栈与递归,在草稿纸上模拟几遍后,写出了一个简洁的函数用于进制转换。 代码如下: //因为进制取余结果和输出顺序恰恰相反,故使用栈来保存余数 void f(int n,int k,stack<int> &...
  • 计算十进制转换为二进制的过程可以当成把每个计算后取余的数字压入栈内的操作具体实现过程如下// 十进制转二进制代码function dec2bin(decNumber){//定义栈var stack=new Stack()//将数字压入栈内while(decNumber>...
  • C语言数据结构中数制转换实例代码数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以便...
  • /*自定义栈和队列实现 进制转化 十进制转二进制*/ #include <iostream> #include <string.h> using namespace std; typedef struct SNode{ int data; SNode *next; }SNode,*LinkStack; /*栈初始化*/ ...
  • 1.利用栈的数据结构特点,将二进制转换为十进制数分析由于栈具有先进后出的特性,我们输入11001001的二进制数,出栈的顺序就相反,将每个出栈的数带入进制转换公式得到的结果就是转换之后的十进制数完整代码#include...
  • java 进制转化

    2021-04-18 01:37:14
    python数据结构进制转化探索 *********************************第一部分*************************************************************** ... 《N诺机试指南》(五)进制转化 进制转化类题目类型: 代码详解及...
  • 说一下hashmap这个数据结构? 进行一次查找的话haspmap的时间复杂度是多少? 给你一个算法你看一下,有一个无限长的整型数组,从小到大排序,非递增。那么怎么找到数组中一个key? 闲聊 之后就问了我最近看了哪本书...
  • 进制表示法在计算机科学中很重要,计算机中存储的所有值都以一串二进制数字,即0和1的形式存在。 如果无法在通用表示形式和二进制数字之间来回转换,我们将需要以非常奇怪的方式与计算机进行交互。十进制的数字...
  • hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移? Linux的共享内存如何实现,大概说了一下。 Linux 中的用户模式和内核模式是什么含意? 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,308
精华内容 44,523
关键字:

数据结构进制转化

数据结构 订阅