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;//用來存儲(chǔ);
          ?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)試代碼不太會(huì),害我編了很多測試代碼)。明天看看異常處理,把這個(gè)代碼優(yōu)化下搞個(gè)什么StackProgramException 來捕獲棧空棧滿的問題就好了,沒有了if....else.爽。明天就去寫寫,希望能寫出來來。(先去做上面的題目了,棧實(shí)現(xiàn)算術(shù)表達(dá)式)

          評(píng)論

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 安多县| 眉山市| 泌阳县| 黔南| 增城市| 紫云| 佳木斯市| 小金县| 曲靖市| 通山县| 上犹县| 淮安市| 平遥县| 望谟县| 政和县| 瓦房店市| 呼和浩特市| 怀柔区| 大关县| 安庆市| 南京市| 双城市| 巴南区| 海南省| 磐石市| 临夏县| 桐乡市| 桐梓县| 乌鲁木齐市| 漳平市| 定结县| 富蕴县| 怀来县| 桦川县| 石首市| 南陵县| 通州市| 龙胜| 黄梅县| 萍乡市| 承德县|