Java栈类实现:
public class StackExercise { Object[] stacks; // 栈容器 int size; // 栈容量 int top; // 记录位置 int len; // 栈实际成员数量 public StackExercise(int size) { super(); this.size = size; this.stacks = new Object[this.size]; this.top = -1; } // 获取栈顶元素 public Object peek() { return this.stacks[top]; } // 判断栈是否为空 public boolean isEmpty() { return top == (-1); } // 判断栈是否已满 public boolean isFull() { return top == (size - 1); } // 入栈过程 public void push(Object value) { len++; stacks[++this.top] = value; } // 出栈过程 public Object pop() { len--; return stacks[this.top--]; // 注意这里不能用“--this.top”,会导致栈溢出 } // 获取栈实际大小 public int len() { return this.len; } }
实现进制转换:
public class TestStack { // 二进制转换方法 public static String toJinzhi(int num) { StackExercise stack = new StackExercise(32); while (num > 0) { stack.push(num % 2); num = num / 2; } StringBuffer sBuffer = new StringBuffer(); while (!stack.isEmpty()) { sBuffer.append(stack.pop()); } return sBuffer.toString(); } // 通用进制转换方法 public static String baseConvert(int num, int base) { StackExercise stack = new StackExercise(32); while (num > 0) { stack.push(num % base); num = num / base; } String dights = "0123456789abcdef"; StringBuffer sBuffer = new StringBuffer(); while (!stack.isEmpty()) { sBuffer.append(String.valueOf(dights.charAt((int) stack.pop()))); } return sBuffer.toString(); } public static void main(String[] args) { System.out.println(toJinzhi(123456789)); System.out.println(baseConvert(255, 2)); } }