<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    注:下文代碼主要來自參考書籍,本人稍稍修改了一下。

    泛型棧類:
    package com.heyang;

    /**
     * 棧數據結構
     * 說明:
     * 作者:何楊(heyang78@gmail.com)
     * 創建時間:2011-1-15 上午07:51:09
     * 修改時間:2011-1-15 上午07:51:09
     
    */
    public class MyStack<T>{
        
    private int size;    // 大小
        private T[] datas;    // 數據
        private int top;    // 棧頂元素下標
        
        @SuppressWarnings(
    "unchecked")
        
    public MyStack(int size){
            
    this.size=size;
            datas
    = (T[])new Object[this.size]; 
            top
    =-1;
        }
        
        
    /**
         * 壓棧
         
    */
        
    public void push(T t){
            datas[
    ++top]=t;
        }
        
        
    /**
         * 出棧
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:01:15
         
    */
        
    public T pop(){
            
    return datas[top--];
        }
        
        
    /**
         * 取得棧頂元素
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:02:02
         
    */
        
    public T getTopItem(){
            
    return datas[top];
        }
        
        
    /**
         * 查看棧是否為空
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:02:38
         
    */
        
    public boolean isEmpty(){
            
    return top==-1;
        }
    }

    括號檢查類:
    package com.heyang;

    /**
     * 表達式中括號檢查類
     * 說明:
     * 作者:何楊(heyang78@gmail.com)
     * 創建時間:2011-1-15 上午08:05:25
     * 修改時間:2011-1-15 上午08:05:25
     
    */
    public class BracketChecker{
        
    private String input;        // 輸入:待檢查的表達式
        private boolean isValid;    // 是否檢查通過
        private String checkResult;        // 輸出:檢查結果
        
        
    /**
         * 構造函數
         * 
    @param input
         
    */
        
    public BracketChecker(String input){
            
    this.input=input;
            
    this.isValid=false;
            
    this.checkResult="";
            
            check();
        }
        
        
    /**
         * 執行檢查
         * 
         * 說明:
         * 創建時間:2011-1-15 上午08:09:25
         
    */
        
    private void check(){
            
    int length=input.length();
            MyStack
    <Character> stack=new MyStack<Character>(length);
            
            
    for(int i=0;i<length;i++){
                
    char c=input.charAt(i);
                
                
    switch(c){
                    
    case '{':
                    
    case '[':
                    
    case '(':
                        stack.push(c);
                        
    break;
                    
    case '}':
                    
    case ']':
                    
    case ')':
                        
    if(stack.isEmpty()==false){
                            
    char top=stack.pop();
                            
                            
    if( (c=='}' && top!='{'|| (c==']' && top!='['|| (c==')' && top!='(') ){
                                isValid
    =false;
                                checkResult
    ="經檢查,表達式'"+input+"'中,位于第"+(i+1)+"的字符‘"+c+"’沒有對應的匹配項";
                                
    return;
                            }
                        }
                        
    else{
                            isValid
    =false;
                            checkResult
    ="經檢查,表達式'"+input+"'中,位于第"+(i+1)+"的字符‘"+c+"’沒有對應的匹配項";
                            
    return;
                        }
                        
    break;
                    
    default:
                        
    break;
                }
            }
            
            
    if(stack.isEmpty()==false){
                isValid
    =false;
                checkResult
    ="經檢查,表達式'"+input+"'中右括號缺失,匹配不完整";
                
    return;
            }
            
    else{
                isValid
    =true;
                checkResult
    ="經檢查,表達式'"+input+"'中括號匹配無誤.";
                
    return;
            }
        }

        
    /**
         * 括號是否匹配
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:39:38
         
    */
        
    public boolean isValid() {
            
    return isValid;
        }

        
    /**
         * 取得檢查結果
         * 
         * 說明:
         * 
    @return
         * 創建時間:2011-1-15 上午08:39:27
         
    */
        
    public String getCheckResult() {
            
    return checkResult;
        }
        
        
    public static void main(String[] args){
            String[] arr
    ={"1+(2/3-4","[1+(2/3-4)]*5","{[1+(2/3-4)]*5+(6+2*3)}*7","{[1+(2/3-4]*5+(6+2*3)}*7"};
            
            
    for(String str:arr){
                BracketChecker c
    =new BracketChecker(str);
                System.out.println(c.getCheckResult());
            }
        }
    }

    檢查結果:
    經檢查,表達式'1+(2/3-4'中右括號缺失,匹配不完整
    經檢查,表達式
    '[1+(2/3-4)]*5'中括號匹配無誤.
    經檢查,表達式
    '{[1+(2/3-4)]*5+(6+2*3)}*7'中括號匹配無誤.
    經檢查,表達式
    '{[1+(2/3-4]*5+(6+2*3)}*7'中,位于第11的字符‘]’沒有匹配項


    參考書籍:SAMS的《Java數據結構與算法》第四章

    posted on 2011-01-15 08:49 何楊 閱讀(732) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 黄色短视频免费看| 亚洲最大的成人网站| 亚洲AV无码精品无码麻豆| 久久久久久亚洲AV无码专区| 精品一区二区三区无码免费直播| 久青草视频在线观看免费| 亚洲人成人无码网www国产| 亚洲国产片在线观看| 免费精品久久天干天干| 久久精品无码一区二区三区免费 | 91亚洲国产成人久久精品| 热re99久久6国产精品免费| 国产嫩草影院精品免费网址| 久久亚洲伊人中字综合精品| 亚洲人成人网毛片在线播放| 怡红院免费的全部视频| 日韩一级视频免费观看| 亚洲精品日韩专区silk| 乱淫片免费影院观看| 色婷婷7777免费视频在线观看| 亚洲精品国产高清嫩草影院| 国产精品偷伦视频免费观看了| 精品免费国产一区二区三区| 亚洲欧洲日韩在线电影| 日本人成在线视频免费播放| 亚洲国产成人爱av在线播放| 久久精品国产亚洲av麻豆蜜芽| 四虎影视成人永久免费观看视频 | 成人福利在线观看免费视频| 亚洲尤码不卡AV麻豆| 免费国产高清毛不卡片基地| 99久久免费精品国产72精品九九| 色偷偷亚洲第一综合网| 四虎影院免费视频| 亚洲香蕉久久一区二区三区四区| 97在线视频免费播放| 久久精品国产精品亚洲色婷婷| 成视频年人黄网站免费视频| 人妻18毛片a级毛片免费看| 久久亚洲AV无码精品色午夜| 日韩免费无码一区二区三区 |