无清 2016-01-27 06:25 采纳率: 66.7%
浏览 1449
已采纳

java中++a和a++ 在数组实现栈中的小疑问

package 数组实现栈;

public class StackArray implements Stack {
public static final int num = 1024;//数组默认容量
public int capacity;//数组实际容量
public Object s[];//对象数组
public int top = -1;//栈顶元素位置

//构建默认容量栈对象
public StackArray() {
    this(num);
}

//构建指定容量栈对象
public StackArray(int a) {
    capacity = a;
    s = new Object[capacity];
}

//获取栈当前容量
public int getSize() {  
    return(top+1);
}

//判断栈是否为空
public boolean isEmpty() {
    return(top<0);
}

//入栈
public void push(Object obj) throws ExceptionStackFull {
    if(getSize() == capacity) {
        throw new ExceptionStackFull("栈溢出");
    }
    else {
        s[++top] = obj;             // ?????????????  想问下top++为什么不行
    }
}

//取栈顶元素
public Object top() throws ExceptionStackEmpty {
    if(isEmpty()) {
        throw new ExceptionStackEmpty("栈空");
    }
    else {
        return s[top];
    }
}

//出栈
public Object pop() throws ExceptionStackEmpty {
    if(isEmpty()) {
        throw new ExceptionStackEmpty("栈空");
    }
    else {
        Object a = s[top];
        s[top--] = null;           //????????????  出栈时不是把s[top]赋空值吗 怎么是s[top--]
        return a;
    }
}

}

我在用这栈来实现倒置时前面只能是++top 和 top-- 否则出现数组越界
倒置的代码如下
package 数组实现栈;

public class daozhi {
public static void main(String[] args) {
Integer b[] = { 1, 2, 3, 4, 5 };
reverse(b);

    for (int i = 0; i < b.length; i++) {
        System.out.println(b[i]);
    }

}

// 实现数组倒置
public static Integer[] reverse(Integer a[]) {
    StackArray s = new StackArray(a.length);
    // Integer n[] = new Integer[a.length];
    for (int i = 0; i < a.length; i++) {
        s.push(a[i]);
    }
    for (int i = 0; i < a.length; i++) {
        a[i] = (Integer) s.pop();
    }
    return a;
}

}

  • 写回答

4条回答

  • 清泉流 2016-01-27 08:23
    关注

    top++是先取s[top]的值,top再加一,如果使用这个,top一开始是-1,我看上面也没有判断top是否是小于0,所以会出现数组越界

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题