📜  使用堆栈将十进制数转换为二进制数的Java程序

📅  最后修改于: 2022-05-13 01:54:30.055000             🧑  作者: Mango

使用堆栈将十进制数转换为二进制数的Java程序

Java是高级的、编译型和解释型编程语言。堆栈是大多数编程语言中使用的抽象数据类型,可以使用数组或链表来实现。堆栈数据结构遵循 LIFO(后进先出)原则。堆栈允许执行推送、弹出、查看操作。 push 操作用于向堆栈中插入一个新元素。 pop 操作用于从栈顶移除一个元素。 peek 操作用于获取栈顶元素而不将其从栈中移除。一个十进制数可以通过栈的push 和pop 操作转换成二进制数。现在, Java提供了内置的 Stack 类,可用于满足我们的目的。

使用堆栈将十进制数转换为二进制数:

  1. 使用预定义的堆栈。
  2. 使用数组作为堆栈。

方法 1:使用预定义堆栈

方法:

  • 预定义的堆栈类用于创建堆栈。
  • 要求用户输入一个十进制数。
  • 接下来,执行 while 循环,其中将数字乘以 2 的 mod 结果压入堆栈,并将数字除以 2。
  • 重复此操作,直到数字大于 0。
  • 当数字为 0 时,while 循环终止,另一个 while 循环开始打印十进制数的二进制等价物。
  • 存储在堆栈中的余数在 LIFO 中弹出,这给出了所需的二进制表示。

代码实现:

Java
// Java Program to Convert a Decimal Number 
// to Binary Number using Stacks
  
import java.util.*;
public class DecimalToBinary
{
public static void main(String args[])
{
    // creating a stack 
    Stack stack = new Stack();
    
    System.out.println("Enter a decimal number: ");
    int num = 23;
    
    while(num>0)
    {
        int r = num%2;
        
        // pushing the remainder inside the stack
        stack.push(r);
        num/=2;
    }
    
     System.out.print("Binary equivalent: ");
    
     while (!(stack.isEmpty() ))
     {
         // printing the resultant binary number stored in the 
         // stack in LIFO manner
         System.out.print(stack.pop());
     }
}
}


Java
// Java Program to Convert a Decimal Number
// to Binary Number using Stacks
  
import java.util.*;
public class DecimalToBinary {
    static int arr[] = new int[1000];
  
    // maintaining count variable as the top
    // of the stack
    static int count;
  
    // push at the count index and increment the count
    public static void push(int n) { arr[count++] = n; }
  
    // pop all the elements starting from count-1
    // till 0
    public static void pop()
    {
        for (int i = count - 1; i >= 0; i--) {
            System.out.print(arr[i]);
        }
    }
  
    public static void main(String args[])
    {
        System.out.println("Enter a decimal number: ");
        int num = 46;
  
        while (num > 0) {
            int r = num % 2;
            push(r);
            num /= 2;
        }
  
        System.out.print("Binary equivalent: ");
  
        pop();
    }
}


输出
Enter a decimal number: 
Binary equivalent: 10111

方法二:使用数组作为栈

方法:

  • 不使用内置堆栈类,而是使用数组,并定义了 push 和 pop 方法来执行元素的插入和删除。
  • 堆栈是使用静态数组实现的。
  • 静态变量 count 跟踪插入的元素数量。
  • 其余过程与前面的示例完全相似。

Java

// Java Program to Convert a Decimal Number
// to Binary Number using Stacks
  
import java.util.*;
public class DecimalToBinary {
    static int arr[] = new int[1000];
  
    // maintaining count variable as the top
    // of the stack
    static int count;
  
    // push at the count index and increment the count
    public static void push(int n) { arr[count++] = n; }
  
    // pop all the elements starting from count-1
    // till 0
    public static void pop()
    {
        for (int i = count - 1; i >= 0; i--) {
            System.out.print(arr[i]);
        }
    }
  
    public static void main(String args[])
    {
        System.out.println("Enter a decimal number: ");
        int num = 46;
  
        while (num > 0) {
            int r = num % 2;
            push(r);
            num /= 2;
        }
  
        System.out.print("Binary equivalent: ");
  
        pop();
    }
}
输出
Enter a decimal number: 
Binary equivalent: 101110