Posted on 2006-06-08 20:21
hays(海纳百川) 阅读(666)
评论(1) 编辑 收藏
今天在书上看到了一道关于栈的经典例题:用栈实现“4+2*3-10/5”这个算术表达式。于是在eclipe上我先编写一个栈,功能上是实现了栈的出栈和入栈;
package com.vitam.consloe;
import java.lang.*;
import java.math.*;
import java.util.*;
import java.util.Vector;
public class MyStack {
private int top;//栈顶top;
private int length;
private char[] stack;//用来存储;
public MyStack()
{
top=0;//指向栈底;
}
public MyStack(int n)
{
this();
this.length=n;
stack= new char[n];
for(int i =0;i<n;i++)
{
stack[i]='#';
}
}
public void setTop(int n)
{
this.top=n;
}
public int getTop()
{
return this.top;
}
public void setLength(int n)
{
this.length=n;
}
public int getLength()
{
return this.length;
}
public char outStack()
{
char tmp='#';//
if(top==0)
{
System.out.print("栈为空,没有元素");
}
else
{
--top;
tmp=this.stack[top];
this.stack[top]='#';
}
return tmp;
}
public void pushStack(char n)
{
if(top==stack.length)
{
System.out.print("栈满,无法插入元素");
}
else
{
this.stack[top]=n;
top++;
}
}
}
代码上有很多不足比如不能插入其他类型的数据(呵呵,其实可以用java自带的Stack)。可是在编写过程中独自思考问题,解决问题到最后调试成功的过程真的很爽!(哎,真郁闷!eclipes怎么调试代码不太会,害我编了很多测试代码)。明天看看异常处理,把这个代码优化下搞个什么StackProgramException 来捕获栈空栈满的问题就好了,没有了if....else.爽。明天就去写写,希望能写出来来。(先去做上面的题目了,栈实现算术表达式)