黑马程序员技术交流社区

标题: 使用栈将一个字符数组反向输出 [打印本页]

作者: 党传才    时间: 2012-4-12 12:53
标题: 使用栈将一个字符数组反向输出
字符数组ch
for(int i = 0; i < 10; i++){
push(ch);
}

for(int i = 0; i < 10; i++){
System.out.print(pop(ch));
}

这样行么  

作者: 未长法    时间: 2012-4-12 13:00
字符数组ch
for(int i = 0; i < 10; i++){
push(ch[i]);
}

for(int i = 0; i < 10; i++){
System.out.print(pop(ch[i]));
}


作者: 袁计艳    时间: 2012-4-12 13:49
给你一个完整的吧:
import java.util.Stack;

public class Test2 {

        static char[] ch = {'a','b','c','d','e'};
        public static void main(String[] args) {
                Stack stack = new Stack();
                for(int i=0;i<ch.length;i++){
                        //push(ch[i]);
                        stack.push(ch[i]);
                }
                for(int i=0;i<ch.length;i++){
                        System.out.print(stack.pop());
                }
        }
}
作者: 党传才    时间: 2012-4-12 14:40
thank you
作者: 姜志钦    时间: 2012-4-12 16:22
我来解释一下楼上写的代码:
import java.util.Stack;

public class Test2 {

        static char[] ch = {'a','b','c','d','e'};
        public static void main(String[] args) {
                Stack stack = new Stack();//创建一个堆栈对象
                for(int i=0;i<ch.length;i++){
                        //push(ch[i]);
                        stack.push(ch[i]);//push()方法把项推到堆栈顶部,即第一次循环a被推向堆栈顶部,第二次b被推向顶部,依次类推,最后e在堆栈顶部,a
在堆栈底部                }
                for(int i=0;i<ch.length;i++){
                        System.out.print(stack.pop());//pop()方法去除堆栈顶部的对象,并返回该对象的值;类似方法还有peek(),但这个方法不会移除堆栈顶部对象,如果用这个方法不论循环多少次取到的值还是顶部的e;所以这边采用pop()方法,在取顶部的e的时候并去除它,那取完e后堆栈的顶部就变成了d,再次调用pop()取值并去除,以此循环到取a,结果输出edcba。但是数组存储的顺序并没有改变,即每一项对应的下标值并没有变,数组还是abcde
                }
        }
}


  





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2