10进制转二进制 栈

import java.util.*;
public class Trans10_2{
	//利用短除法+栈
	public static void main(String[] args){
		int N = 10;
		int TYPE2 = 2;
		Stack<Integer> stack = new Stack();
		while(N != 0){
			int mode = N % TYPE2;
			// System.out.println("mode:"+mode);
			stack.push(mode);
			N = N / TYPE2;
		}
		// for (int i : stack) {			//集合遍历方式, 0 1 0 1不符合要求
			// System.out.print(i + " ");	//错误的集合遍历:System.out.println(s.pop());
		// }
		while (!stack.empty()) { 
            System.out.println(stack.pop()); 
        } 
		System.out.println();
	}
}

转载于:https://my.oschina.net/datacube/blog/777239

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序栈是一种的存储结构,它是用一段连续的存储单元依次存储中的元素,顶指针指向顶元素。顺序栈可以用数组来实现。十进制转二进制是指将一个十进制数换为二进制数。顺序栈可以用来实现十进制转二进制的功能。具体实现方法如下: 1. 定义一个顺序栈,用于存储二进制数。 2. 输入一个十进制数,将其不断除以2,将余数压入中,直到商为0。 3. 依次出,输出中的元素,即为该十进制数的二进制表示。 以下是代码实现: ``` #include <stdio.h> #include <stdlib.h> #define MAXSIZE 20 //静态顺序栈存储的最大空间 typedef struct { int data[MAXSIZE];//静态顺序栈可用的最大容量 int top;//顶 }SqStack; void InitStack(SqStack &S)//的初始化 { S.top = -1;//静态顺序栈中,使S.top=-1便是对的初始化 } int Push(SqStack &S,int e)//进 { if(S.top==MAXSIZE-1)//判断是否为满 { printf("满!\n"); return 0; } S.data[++S.top]=e;//S.top自加一,使S.top=0,使输入的e值导入中 return 0; } void Pop(SqStack &S)//使顶元素出,并输出顶元素,且长减一 { if(S.top == -1)//判断是否为空 printf("空!\n"); else printf("%d",S.data[S.top--]);//输出顶元素 } void Binary(SqStack S)//十进制转二进制函数 { int a, i = 0; printf("请输入十进制数: "); scanf("%d",a);//输入任意的十进制数 while(a)//循环结束条件是a为0 { Push(S,a%2);//余数进 a = a/2;//由于是整数形式,不存在除不尽的状况,假设a=1,除2等于0 i++;//记录进多少次 ,方便出操作 } while(i)//循环终止条件是i为0 { Pop(S);//依次输出顶元素 i--; } } int main() { SqStack S; InitStack(S);//创建一个,并初始化 Binary(S);//进制换 return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值