<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片在线看| 宅男666在线永久免费观看| 国产精品久久亚洲一区二区| 亚洲欧美日本韩国| 亚洲精品午夜久久久伊人| 亚洲成AV人片在线观看无| 亚洲色欲久久久综合网东京热| 免费一级毛片在线观看| 日本牲交大片免费观看| 暖暖日本免费在线视频| 处破痛哭A√18成年片免费| 日韩欧美一区二区三区免费观看| 91福利免费体验区观看区| 99久久99热精品免费观看国产| 日韩电影免费观看| 最近最好最新2019中文字幕免费| 日韩精品免费视频| 国产精品久久久久久久久免费| 日本免费网站视频www区| 无人在线直播免费观看| 在线成人a毛片免费播放| 亚洲中文字幕无码中文| 亚洲AV无码乱码麻豆精品国产| 国产精品综合专区中文字幕免费播放 | 岛国片在线免费观看| 国产成人aaa在线视频免费观看 | 亚洲香蕉免费有线视频| 永久在线毛片免费观看| 国产精品亚洲综合专区片高清久久久 | 亚洲国产精品无码观看久久| 亚美影视免费在线观看| 毛片a级毛片免费播放下载| 亚洲人成色7777在线观看| 美女被免费视频网站| 一个人在线观看视频免费| 亚洲精品成人无码中文毛片不卡| 亚洲成aⅴ人片在线影院八| 中文永久免费观看网站| 亚洲国产精品激情在线观看| 美女视频黄免费亚洲| 亚洲一级免费毛片|