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