精华内容
下载资源
问答
  • 进制转换函数 //进制转换 void conversion() { int n, N; LinkStack S; S =InitStack(S); printf("请输入想要转换的数字和进制:"); scanf("%d%d", &n, &N); while(n) { S = Push(S, n%N); n =...

    依据公式:

    N=(N div d) * d +(N mod d) (其中,div为整除运算,mod为求余运算)

    进制转换函数 

    //进制转换 
    void conversion()
    {
    	int n, N;
    	LinkStack S;
    	S =InitStack(S);
    	printf("请输入想要转换的数字和进制:");
    	scanf("%d%d", &n, &N);
    	while(n)
    	{
    		S = Push(S, n%N);
    		n =n/N;
    	}
    
    	
    	int e;
    	while (!StackEmpty(S))
    	{
    		S = Pop(S,&e);
    		printf("%d", e);
    	}
    }

     

    完整代码 

    #include <Stdio.h>
    #include <stdlib.h>
    #define MAXSIZE 100
    #define ERROR 0
    #define OVERFLOW -1
    #define Status int
    #define OK 1
    #define ElementType int
    
    typedef struct StackNode{
    	ElementType data;
    	struct StackNode *next;
    }StackNode, *LinkStack;
    
    //构造 
    Status InitStack(LinkStack S)
    {
    	S = NULL;
    	return S;
    }
    
    //压入栈 
    Status Push(LinkStack S, ElementType e)
    {
    	LinkStack p;
    	p = (LinkStack)malloc(sizeof(StackNode));
    	p->data=e;      //赋值
    	p->next=S;      //压入栈顶
    	S=p;
    
    	return S;
    }
    
    //弹出栈 
    Status Pop(LinkStack S, ElementType* e)
    {
    	LinkStack p;
    	if (S == NULL) return ERROR;
    	*e = S->data;
    
    	p = S;
    	S = S->next;
    	free(p);
    	return S;
    }
    int StackEmpty(S)
    {
    	if(S != NULL)
    	return 0;
    	else return 1;
    }
    
    //进制转换 
    void conversion()
    {
    	int n, N;
    	LinkStack S;
    	S =InitStack(S);
    	printf("请输入想要转换的数字和进制:");
    	scanf("%d%d", &n, &N);
    	while(n)
    	{
    		S = Push(S, n%N);
    		n =n/N;
    	}
    
    	
    	int e;
    	while (!StackEmpty(S))
    	{
    		S = Pop(S,&e);
    		printf("%d", e);
    	}
    }
    
    //主函数 
    int main()
    {
    	conversion();
    	
    	return 0;
    }

     

    展开全文
  • 进制转换问题建立顺序或链栈,编写程序实现十进制数到二进制数的转换。输入输入只有一行,就是十进制整数。输出转换后的二进制数。样例输入10样例输出1010十进制怎么转为二进制?十进制转二进制怎么转?十进制整数...

    进制转换问题

    建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换。

    输入

    输入只有一行,就是十进制整数。

    输出

    转换后的二进制数。

    样例输入

    10

    样例输出

    1010

    十进制怎么转为二进制?十进制转二进制怎么转?

    十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来

    利用栈的后进先出性质写一个10到2进制转换的小程序,实现顺序栈,代码如下:

    #includetypedef struct Stack

    {

    int data[100];

    int top;

    }SqStack;

    //建立顺序栈

    void Init(SqStack *&s)

    {

    s=(SqStack *)malloc(sizeof(SqStack));

    s->top=-1;

    }

    //栈的初始化

    bool En(SqStack *&s,int e)

    {

    if(s->top==99)

    return false;

    s->top++;

    s->data[s->top]=e;

    return true;

    }

    //进栈

    bool Pop(SqStack *&s)

    {

    if(s->top==-1)

    return false;

    s->top--;

    return true;

    }

    //出栈

    int main()

    {

    printf("十进制到二进制转换程序\n*******************\n");

    SqStack *s;

    Init(s);

    int n,m;

    printf("请输入一个十进制的整数\n");

    scanf("%d",&n);

    m=n;

    while(m!=0)

    {

    int e=m%2;

    En(s,e);

    m/=2;

    }

    printf("其转化为二进制的数为");

    while(s->top!=-1)

    {

    printf("%d",s->data[s->top]);

    Pop(s);

    }

    return 0;

    }

    e2508c8eb70fbf449acbfb33171eeccc.png

    展开全文
  • 实现进制转换

    2017-10-04 17:03:44
    该资源利用栈的知识实现了进制转换,包含栈的建立,清空,压栈,出栈等基本操作,以及辗转相除法求余数
  • 利用栈实现进制转换

    2021-11-02 16:33:59
    一、的概念 是一种基本的数据结构,分为顺序和链式两种。的基本特点是先入栈的元素后离。在理解这一特点时,我们可以把他当做一个箱子,先放入的东西会到最下面,例如下图:将1、2、3、4依次保存入栈,...

    一、栈的概念

    栈是一种基本的数据结构,分为顺序栈和链式栈两种。栈的基本特点是先入栈的元素后离栈。在理解这一特点时,我们可以把他当做一个箱子,先放入的东西会到最下面,例如下图:将1、2、3、4依次保存入栈,最后放入栈中的元素会保存在栈的顶部。也就是说,在将元素读出栈时,与入栈的顺会是正好相反的。

    在这里插入图片描述

    二、栈基本操作的代码实现

    1.宏定义

    typedef int Elementype;
    typedef struct Node *PNode;
    typedef struct Stack *PStack;
    typedef struct Node Node;
    typedef struct Stack Stack;
    

    2.结构体的创建

    typedef struct Node {
        Elementype data;
        struct Node *next;
    } Node, *PNode;
    
    typedef struct Stack {
        PNode top;
        PNode bottom;
    } Stack, *PStack;
    

    3.栈中节点与栈的创建

    PNode Create_Node() {
        PNode p = (PNode) malloc(sizeof(Node));
        if (!p) {
            printf("节点未创建成功");
            exit(-1);
        }
        p->data = 0;
        p->next = NULL;
        return p;
    }
    PStack Create_Stack() {
        PStack s;
        s = (PStack) malloc(sizeof(Stack));
        if (!s) {
            printf("栈未创建成功");
            exit(-1);
        } else {
            s->top = s->bottom;
            s->top = NULL;
            return s;
        }
    }
    

    4.入栈以及遍历操作

    void Push_Stack(PStack S, int i) {
        PNode p = Create_Node();
        if (!p) {
            printf("节点未创建成功");
        }
        p->data = i;
        p->next = S->top;
        S->top = p;
    }
    
    void Traverse_Stack(PStack S) {
        PNode p;
        p = S->top;
        while (p != S->bottom) {
            printf("%d", p->data);
            p = p->next;
        }
        printf("\n");
    }
    

    三、实现进制转换

    我们知道在进行进制转换时,用原数除以要转换的进制,直到余数为零。最后将所得余数倒序排列,即可得到转换后的数字。利用这一特点,我们可以将每次的余数保存进栈中,最后遍历得到栈中元素,正好是转化后数字的正确顺序。下面是代码实现(在上面栈的各项操作实现的情况下)。

    int main() {
        PStack S = Create_Stack();
        int n;
        printf("请输入需要转化的数字");
        scanf("%d", &n);
        while (n) {
            Push_Stack(S, n % 2);
            n = n / 2;
        }
        Traverse_Stack(S);
    }
    

    运行结果:

    在这里插入图片描述
    欢迎大家评论区讨论。

    展开全文
  • 数据结构中,利用栈实现进制转换
  • java利用栈进行进制转换

    千次阅读 2018-10-25 17:01:27
    (Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行。通常称允许插入、删除操作的这一端为栈顶(Top),不允许操作的一端称为底(Bottom)。当表中没有元素时称为空栈。 假设S=(a0,a1,a2,a3...
    • 栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行。通常称允许插入、删除操作的这一端为栈顶(Top),不允许操作的一端称为栈底(Bottom)。当表中没有元素时称为空栈
    • 假设栈S=(a0,a1,a2,a3,…an-1),则a0称为栈底元素,an-1为栈顶元素,标识栈顶位置的指针称为栈顶指针。栈中元素按a0, a1,a2,a3,… an-1的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。
    • 习惯上将每次删除(也称为退栈)操作又称为出栈或弹出(POP)操作。删除的元素总是当前栈中“最新”的元素(栈顶元素)。
    • 每次插入(称为进栈)操作称为入栈或压入(PUSH)操作,入栈的元素总是当前栈中“最新”的元素。
    • 在空栈中最先插入的元素总被放在栈的底部,只有所有元素被弹出之后它才能被删除。
    出入栈示例

    在这里插入图片描述
    1.栈的简单应用:数制转换问题(将十进制数N转换为r进制的数)
    将十进制数N转换为r进制的数
    Change.java

    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class Change {
    	Stack<String> stack = new Stack<String>();
    	//num是想要转换的数字,rank是想要转换的进制
    	public int getResult(int num,int rank) {//获取整数商
    		return num/rank;
    	}
    	public int getRemain(int num,int rank) {//获取余数
    		return num%rank;
    	}
    	public void run(int num,int rank) {
    		int result=getResult(num, rank);
    		//当整除是将余数添加到栈中,退出递归进程
    		if(result==0) {
    			stack.push(getRemain(num, rank)+" ");
    		}else {
    			stack.push(getRemain(num, rank)+" ");
    			run(result, rank);//进行递归
    		}
    	}
    	public static void main(String[] args) {
    		Change change=new Change();
    		System.out.println("请输入一个十进制数字:");
    		Scanner sca = new Scanner(System.in);
    		int num = sca.nextInt();
    		System.out.println("请输入想要转换为几进制的数字:");
    		int rank = sca.nextInt();
    		change.run(num, rank);
    		String Result = "";
    		while(!change.stack.isEmpty()) {
    			Result += change.stack.pop(); 
    		}
    		System.out.println(Result);
    	}
    }
    
    
    展开全文
  • 利用栈进行进制转换(c++)

    千次阅读 2020-10-03 11:25:20
    用c++利用栈存储结构将十进制转换为八进制和十六进制 #include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ #...
  • 栈--利用栈实现进制转换

    万次阅读 多人点赞 2018-03-30 15:32:58
    利用栈实现进制转换 一、二进制转十进制 利用栈的数据结构特点,将二进制转换为十进制数。 二进制数是计算机数据的存储形式,它是由一串0和1组成的,每个二进制数转换成相应的十进制数方法如下: (XnXn-1……...
  • 进制转换实现)

    2017-07-08 15:12:04
    利用栈实现进制转换,支持16进制以下进制(2-10、16),更改相应的参数还可扩展其他进制转换,还可以通过更改宏定义来扩宽进制转换的数据范围。用户通过输入想要转换的进制和待转换的数字
  • 利用栈进行进制转换

    2017-11-08 17:30:49
    用递归和进行简单进制转换。 #include<stdio.h> #include<stdlib.h> #define N 10000 struct stack { int top; //栈顶 int data [N]; }; struct stack selfstack = { -1,{0} }; //的初始化 ...
  • 实现进制转换

    2013-10-29 16:44:21
    C++语言 利用栈操作实现十进制转换成任意进制。
  • 主要介绍了C语言用实现十进制转换为二进制的方法,结合实例形式分析了C语言的定义及进制转换使用技巧,需要的朋友可以参考下
  • C语言-顺序实现十进制转换为二进制-八进制-十六进制
  • Problem A: 使用实现进制转换Time Limit:1 SecMemory Limit:128 MBSubmit:35Solved:19[Submit][Status][Web Board]Description使用将一个很长(>30)的十进制数转换为二进制数Input若干个很长的十进制数每行一...
  • C语言实现进制转换

    2021-01-31 19:54:05
    例如讲10进制转换为2进制计算思路为: 利用循环将每一个余数都压入栈中,再遍历出栈 转换代码: /* 进制转换 */ scStack *sysConvert(int num,int system,scStack *sys){ int q = num / system;//商 int r = num...
  • 用C语言实现进制转换

    千次阅读 2020-10-19 11:36:11
    #include<stdio.h> #include<stdlib.h> #include<...typedef struct //定义的结构体 { int data[MAXSIZE]; int top; }Se,*Pe; Pe begin(); //的初始化 void ru(Pe S,int x); //入栈函数 P
  • 采用顺序栈完成进制转换

    千次阅读 2016-10-17 20:08:10
    采用顺序栈完成进制转换 (1)定义顺序的存储结构; (2)实现顺序的初始化、判断是否为空、进栈、出栈等基本操作; (3)调用顺序的基本操作实现进制转换。 代码: #include #include #include #...
  • 使用实现进制转换

    千次阅读 2018-04-13 11:52:43
    进制转换原理 上图是十进制150转换为二进制的实例,实现方式是将150除以2取余,将余数记下,然后商继续除以2取余,重复该操作,直到商为0为止。 然后将得到的所有余数倒着连起来,就是二进制的值。 十进制转为...
  • 作业code3 十进制转换二进制(代码已经给大家,详情参考“PPT-Jk17数据...顺序实现进制转换 #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;iostream&gt; using n...
  • 实验目的:1、掌握的逻辑结构及存储结构;...完成数字十进制到八进制转换。 输入示例: 请输入需转换的数的个数: 3 请输入需转换的数: 28,58,190 输出示例: 转换结果为: 1、 34 2、 72 3、 276
  • #include #include //#include //#pragma GCC optimize(2) ... cout 请输入将要转为K进制的数N以及K" ;  int num,k;  cin >> num >> k;  conversion(num,k);  return 0; }
  • 1 //利用栈实现十进制转换为二进制2 package classwork9;34 import java.util.Scanner;5 import java.util.Stack;67 public class Jinzhizhuanhuan {8 public static int zhuanhuan(int x) {9 Stack a = new Stack()...
  • C++用顺序实现进制转换

    千次阅读 多人点赞 2019-04-20 19:14:16
    C++语言,用顺序实现十进制向任意进制转换 #include<iostream> #include<stdlib.h> #include<fstream> using namespace std; typedef int ElemType; struct Stack{ ElemType *...
  • 利用栈完成数制转换,能够完成进制向八进制转换 C++ 这里我采用栈的顺序存储结构 Source Code #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef int ElemType; ...
  • 《C语言 用实现进制转换》由会员分享,可在线阅读,更多相关《C语言 用实现进制转换(3页珍藏版)》请在人人文库网上搜索。1、C语言 用实现进制转换#include#include#include#include#define S_SIZE 100 /所占...
  • C语言:利用栈实现进制转换

    万次阅读 多人点赞 2016-10-04 14:57:59
    源代码: /**************************************************...**利用栈实现进制之间的转换 *******************************************************/ #include #include typedef struct SqNode{ int elem; str

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,006
精华内容 20,402
关键字:

利用栈完成进制的转换