<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 男女拍拍拍免费视频网站| 污污视频免费观看网站| 7m凹凸精品分类大全免费| 亚洲国产成人片在线观看无码| 91视频免费观看高清观看完整| 亚洲综合精品香蕉久久网| 色www永久免费| 国产av天堂亚洲国产av天堂| 在线观看片免费人成视频无码| 国产成人无码综合亚洲日韩| 无码精品国产一区二区三区免费 | A国产一区二区免费入口| 国产精品亚洲mnbav网站 | 亚洲日产韩国一二三四区| 国产午夜精品免费一区二区三区| 亚洲福利视频一区| 2021国内精品久久久久精免费| 亚洲三级视频在线| 国产美女精品久久久久久久免费| 美女羞羞免费视频网站| 国产亚洲无线码一区二区 | 免费v片在线观看品善网| 永久免费观看黄网站| 亚洲成AV人片在WWW色猫咪| 中文毛片无遮挡高潮免费| 亚洲久热无码av中文字幕| 亚洲人成无码网WWW| 久久午夜羞羞影院免费观看| 亚洲性无码一区二区三区| 国产成人99久久亚洲综合精品| 一区二区在线免费观看| 亚洲色大网站WWW永久网站| 中文亚洲成a人片在线观看| 18女人毛片水真多免费| 天天综合亚洲色在线精品| 日韩va亚洲va欧洲va国产| 色吊丝永久在线观看最新免费| 国产V片在线播放免费无码| 亚洲中文字幕在线无码一区二区| heyzo亚洲精品日韩| 亚洲成年人免费网站|