自定义Java栈类,并实现进制转换


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));
    }

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM