hays

海纳百川
posts - 25, comments - 48, trackbacks - 0, articles - 0
  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理
     今天在书上看到了一道关于栈的经典例题:用栈实现“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.爽。明天就去写写,希望能写出来来。(先去做上面的题目了,栈实现算术表达式)

评论

# re: 算术表达式用“栈”实现!(1)  回复  更多评论   

2006-06-09 17:28 by phinecos
public void setTop(int n)
{
this.top=n;
}
public int getTop()
{
return this.top;
}
========================
这两个方法对栈顶指针操作?这样做不大好吧。。
另外,是不是可以设置一个private int curLen;这样的类变量来指示栈中的当前元素个数?

只有注册用户登录后才能发表评论。


网站导航: