hays

          海納百川
          posts - 25, comments - 48, trackbacks - 0, articles - 0
            BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理
          ?????今天在書上看到了一道關(guān)于棧的經(jīng)典例題:用棧實(shí)現(xiàn)“4+2*3-10/5”這個(gè)算術(shù)表達(dá)式。于是在eclipe上我先編寫一個(gè)棧,功能上是實(shí)現(xiàn)了棧的出棧和入棧;

          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++;
          ?? }
          ?}

          }

          代碼上有很多不足比如不能插入其他類型的數(shù)據(jù)(呵呵,其實(shí)可以用java自帶的Stack)。可是在編寫過程中獨(dú)自思考問題,解決問題到最后調(diào)試成功的過程真的很爽!(哎,真郁悶!eclipes怎么調(diào)試代碼不太會,害我編了很多測試代碼)。明天看看異常處理,把這個(gè)代碼優(yōu)化下搞個(gè)什么StackProgramException 來捕獲棧空棧滿的問題就好了,沒有了if....else.爽。明天就去寫寫,希望能寫出來來。(先去做上面的題目了,棧實(shí)現(xiàn)算術(shù)表達(dá)式)

          評論

          # re: 算術(shù)表達(dá)式用“棧”實(shí)現(xiàn)!(1)  回復(fù)  更多評論   

          2006-06-09 17:28 by phinecos
          public void setTop(int n)
          {
          this.top=n;
          }
          public int getTop()
          {
          return this.top;
          }
          ========================
          這兩個(gè)方法對棧頂指針操作?這樣做不大好吧。。
          另外,是不是可以設(shè)置一個(gè)private int curLen;這樣的類變量來指示棧中的當(dāng)前元素個(gè)數(shù)?

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 汶川县| 墨脱县| 大竹县| 南郑县| 绍兴市| 独山县| 榆林市| 仁寿县| 内乡县| 张家港市| 利津县| 克什克腾旗| 韶山市| 绥芬河市| 右玉县| 黄梅县| 利津县| 武功县| 茌平县| 安龙县| 岢岚县| 邵阳县| 玛多县| 法库县| 虎林市| 瑞昌市| 湛江市| 乌鲁木齐县| 山丹县| 海兴县| 固阳县| 克山县| 忻州市| 奉化市| 丰镇市| 固原市| 昭通市| 石狮市| 平湖市| 陇南市| 三台县|