题目描述
利用栈类,实现将一个十进制整数转化为二至九进制之间的任一进制输出。函数原型void Convert(int num,int d),将十进制num转换为d进制,在函数体内实现输出即可。
若num为正整数,则算法规则如下:
循环(直至num为0)
{ 将num%d压栈;
num/=d;
}
循环(栈非空)
{
栈顶元素弹栈,输出(进制的高位)
}
要求程序能够处理正、负整数(含0)
输入
输出
样例输入
样例输出
提示
来源
提交
import java.util.Scanner;class Node {public Object data;public Node next;public Node() {this(null,null);}public Node(Object data) {this(data,null);}public Node(Object data, Node next) {this.data = data;this.next = next;}}class LinkStack{Node top;public LinkStack() {top = null;}public void push(Object x){top = new Node(x,top);}public Object pop() throws Exception {if(isEmpty()){throw new Exception("Downflow");}else {Node p = top;top = top.next;return p.data;}}public Object getTop() throws Exception {if(isEmpty()){throw new Exception("Downflow");}else {return top.data;}}public boolean isEmpty(){return top==null;}}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num1 = scanner.nextInt();int num2 = scanner.nextInt();new Main().Convert(num1,num2);}public void Convert(int num,int d){LinkStack l = new LinkStack();int shang;int yu;while(num!=0){l.push(num % d);num/=d;}while(!l.isEmpty()){try {System.out.print(l.pop());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
