数据结构-java-用栈实现二进制转换

本文介绍如何使用栈来解决二进制转换问题。通过基于线性表实现的栈ADT,实现了将整数转换为其二进制表示的方法,避免了直接使用Java内置的toBinaryString方法。主要涉及栈的操作和辗转相除法。
摘要由CSDN通过智能技术生成

二进制转换问题

  • 输入一个数转换为对应的二进制表示

解题思路

  1. 用栈实现
  2. 基于线性表实现栈的ADT
  3. 转换关键: 一个数(int)转换为对应的二进制①java自带的toBinaryString方法②辗转相除
  4. 此处实现使用辗转相除,有兴趣可以去了解下java自带方法的实现

1. 基于线性表实现ADT

  • Seqlist.java 线性表类
package indi.yyh.datastru.project2.SeqList;

//顺序表

public class SeqList<T> extends Object {
   

//私有变量
    protected Object[] element;
    protected int n;

//构造方法
    public SeqList(int length) {
   
        this.element = new Object[length];
        this.n = 0;
    }
    public SeqList() {
   
        this(64);
    }
    public SeqList(T[] values){
   
        this(values.length);
        for(int i=0;i<values.length;i++){
   
            this.element[i] = values[i];
        }
        this.n =element.length;
    }

//成员方法
    public boolean isEmpty(){
   
        return this.n==0;
    }

    public int size(){
   
        return this.n;
    }

    public T get(int i) {
   
        if (i
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,我们可以使用链式数据结构(如链表)来实现一个,用于将十进制数转换为二进制数。链式的优点是插入和删除操作的时间复杂度相对较低,适合处理这类需要频繁添加和移除元素的情况。 下面是一个简单的步骤描述和示例代码: 1. 创建一个节点类(Node),用于存储数字和指向下一个节点的引用。 2. 实现链式类(LinkedStack),包含基本操作如压(push)、弹(pop)、查看顶元素(peek)等。 3. 在链式类中添加一个方法(decimalToBinary)来将十进制数转换为二进制字符串。 ```java // Node类 class Node { int value; Node next; public Node(int value) { this.value = value; this.next = null; } } // LinkedStack类 class LinkedStack { private Node top; // 添加基本操作... // 将十进制转换为二进制 public String decimalToBinary(int decimal) { if (decimal == 0) { return "0"; } StringBuilder binary = new StringBuilder(); while (decimal > 0) { int remainder = decimal % 2; binary.append(remainder); decimal /= 2; // 向左移动一位 } return binary.reverse().toString(); // 反转字符串,因为链式从后向前添加元素 } } // 使用示例 public static void main(String[] args) { LinkedStack stack = new LinkedStack(); int decimalNumber = 10; String binary = stack.decimalToBinary(decimalNumber); System.out.println("十进制 " + decimalNumber + " 转换为二进制为: " + binary); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值